Nginx 错误:从上游读取响应标头时出现“主要脚本未知”

Nginx 错误:从上游读取响应标头时出现“主要脚本未知”

/etc/nginx/conf.d/default.conf我在 CentOS 6.6 服务器下安装了 Nginx 1.6.2 和 PHP-FPM(PHP 5.5.18)。除了修改了一些文件(见下文)外,我没有修改其他文件:

server {
    listen       80;
    server_name  webvm devserver ;

    location / {
        root   /var/www/html;
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files      $uri =404;
        root           /var/www/html;
        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    }
}

重新启动 Nginx 并尝试访问http://devserver/index.php文件后,出现此错误:

2014/12/01 19:48:51 [错误] 5014#0:*6 FastCGI 在 stderr 中发送:“主要脚本未知”,同时从上游读取响应标头,客户端:192.168.3.1,服务器:webvm,请求:“GET /index.php HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“devserver”

我还检查了/var/www/html使用ls -l命令的权限/所有者,这是输出:

#ls -l /var/www/html/
total 4
-rw-r--r-- 1 root root 23 Dec  1 19:29 index.php

我没有触碰 PHP-FPM 池下的任何内容,因此/etc/php-fpm.d/www.conf采用默认配置:

listen = 127.0.0.1:9000
user = apache
group = apache

可能是权限问题吗?

我在这里读过几篇文章(例如123) 谈论同样的错误和可能的解决方案并尝试应用于我的情况但无法使其发挥作用所以我需要任何帮助,我做错了什么?

笔记:我从显示的文件中取出注释行,因为它们不相关

答案1

对我来说,问题"Primary script unknown" while reading response header from upstream在于,其中一个 php 扩展被卸载了,而它的配置仍在磁盘上(具体来说是 redis 模块)。检查/etc/php/XX/pool.d/*哪些模块有配置(.ini 文件)并且应该安装(或应该删除配置),问题就解决了。安装一个缺失的模块后,一切又开始正常工作了。

这不是 NGINX 的错误,而是 PHP 扩展的问题。

答案2

修改 www.conf

user = nginx 
group = nginx

将 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 更改为

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

并检查 /var/www/html 中是否有 httacess 文件。通常这会导致该问题。

相关内容