我在nginx.conf
upstream php-fpm7.0
{
server unix:/run/php-fpm/php7.sock;
}
我在conf.d/default.conf
location ~ \.php$ {
include php-fpm;
}
我在php-fpm
fastcgi_pass php-fpm7.0;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
# Additional variables
fastcgi_index index.php;
但我收到错误404。 当我评论
#location ~ \.php$ {
# include php-fpm;
#}
文件可用
即使
也会出错location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php7.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
FastCGI在stderr中发送:“主脚本未知”,同时阅读 来自上游的响应头
如果不使用套接字,则会出现同样的错误:
fastcgi_pass 127.0.0.1:9000;
Centos 7
更新1。
我用过之后:
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param SCRIPT $fastcgi_script_name;
fastcgi_param FOLDER $document_root;
fastcgi_param FOLDER_SCRIPT $document_root$fastcgi_script_name;
我得到$_SERVER['SCRIPT']
/index.php
和$_SERVER['FOLDER']
/home/www/m-a-x/www
和$_SERVER['FOLDER_SCRIPT']
/home/www/m-a-x/www/index.php
当我回来时
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
一切正常。 谜。
答案 0 :(得分:1)
您始终可以通过将nginx变量添加到return语句中来对其进行检查,例如:
location / {
return 200 $document_root$fastcgi_script_name;
}
打开URL,将下载一个文件,该文件将包含变量 由nginx返回。例如/srv/www/index.php
检查nginx / php-fpm用户组是否有权访问该文件:
sudo -u www stat /srv/www/index.php
设置权限以沿路径始终读取和执行www用户组的文件。
chmod g + x / srv
chmod g + x / srv / www
chmod g + x /srv/www/index.php