FastCGI在从上游读取响应头时发送stderr主脚本未知

时间:2016-03-16 12:07:54

标签: php nginx centos runtime-error

我在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;

一切正常。 谜。

1 个答案:

答案 0 :(得分:1)

您始终可以通过将nginx变量添加到return语句中来对其进行检查,例如:

location / {
    return 200 $document_root$fastcgi_script_name;
}
  1. 打开URL,将下载一个文件,该文件将包含变量 由nginx返回。例如/srv/www/index.php

  2. 检查nginx / php-fpm用户组是否有权访问该文件:

    sudo -u www stat /srv/www/index.php

  3. 设置权限以沿路径始终读取和执行www用户组的文件。

    chmod g + x / srv

    chmod g + x / srv / www

    chmod g + x /srv/www/index.php