Nginx 的 fastcgi-php.conf 片段丢失了

2022-08-30 21:34:25

我正在尝试使用nginx提供PHP,我之前已经成功遵循了本教程,但是由于某种原因,在新服务器上,我收到以下错误:

 nginx: [emerg] open() "/etc/nginx/snippets/fastcgi-php.conf" failed (2: No such file or directory) 

实际上,nginx安装的整个目录都丢失了。snippets

我用以下命令安装了PHP:
- sudo apt-get install -y php7.0-cli php7.0-cgi php-fpm php-mysql
- sudo systemctl restart php7.0-fpm

我已经安装了最新的nginx - 但目录和文件仍然存在。

如何解决这个问题?

奖励:是什么原因造成的?


答案 1

TLDR:

最终版本是:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi_params;                
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

我认为这取决于您正在使用的Nginx版本。

对于Nate的答案,将为您安装1.10.3。nginx-full

我在Ubuntu 16.04上使用Nginx 1.12.2,对于这个版本,它没有它;它也有不同的PHP CGI设置。sites-enabledsites-available

你可以使用Ulad Kasach的解决方案,也可以开始使用新的方式。

以下是有关如何执行此操作的官方文档:https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

顺便说一句,在上面的帖子中,您还应该替换为.fastcgi.conffastcgi_params

并再添加一行,该行最初是默认的:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

这些都是Nginx 1.12.2的新变化:(

最终版本是:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi_params;                
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

答案 2

最终不得不查看以前的工作配置文件并手动复制它。只需创建目录并添加一个包含以下内容的文件:snippetsfastcgi-php.conf

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

您还需要将最后一行替换为 .include fastcgi.conf;include fastcgi_params;

如果它不是字面上相同的文件,我会建议创建该文件,并在以下情况下使用附加行fastcgi.conf;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi.conf


推荐