/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
可能是权限问题吗?
我在这里读过几篇文章(例如1,2,3) 谈论同样的错误和可能的解决方案并尝试应用于我的情况但无法使其发挥作用所以我需要任何帮助,我做错了什么?
笔记:我从显示的文件中取出注释行,因为它们不相关
答案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 文件。通常这会导致该问题。