在使用nginx / fpm设置站点时,我碰壁了。该页面显示“找不到文件”,这出现在nginx error.log中:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
我是nginx和fpm的新手,并且该错误消息对我而言毫无意义(即使Google机器也无济于事!)。任何人都可以阐明可能发生的事情吗?
SCRIPT_FILENAME
。
在使用nginx / fpm设置站点时,我碰壁了。该页面显示“找不到文件”,这出现在nginx error.log中:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
我是nginx和fpm的新手,并且该错误消息对我而言毫无意义(即使Google机器也无济于事!)。任何人都可以阐明可能发生的事情吗?
SCRIPT_FILENAME
。
Answers:
您应该有一个location
部分来处理与此配置类似的PHP请求:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
(该额外功能try_files
解决了一个安全漏洞,该漏洞可能允许任意文件作为PHP执行。)
另外,您root
应该server
在配置文件的部分而不是该location
部分中定义。这是最常见的nginx错误配置之一。
这是乘客安装的注意事项。
我刚刚通过乘客从源代码安装了nginx,这导致php5-fpm出现问题。默认的nginx.conf利用了Michael Hampton描述的问题。解决方案是消除root和index指令周围的空白,因此:
location / {
root html
index index.html index.htm
}
变成:
root html
index index.html index.htm
此外,php块设置不正确。请参阅迈克尔·汉普顿(Michael Hamptons)的答案,以获取正确的方法。
另外需要注意的是,如果将php5-fpm设置为使用套接字,则将nginx.conf的php块中的fastcgi_pass参数指向/etc/php5/fpm/pool.d/www.conf中的套接字设置。
如果您在位置块中使用别名,则未处理的404错误也可能表现出这种现象。如果浏览器中显示的页面是简单文本“找不到文件”,而不是漂亮的格式化(居中)nginx 404页面,则可以看到此信息。本质上,实际上是在说找不到404页面。
要解决此问题,请try_files $uri =404
在您的位置块中添加一行,然后重新加载nginx配置。除了Michael Hampton关于解决特定安全漏洞的说法外,这还允许fastcgi处理程序覆盖别名定义并在默认位置找到404脚本。
谢谢@homeway,您的回答启发了我。非常感谢你!
我遇到了同样的问题,但是其他方法并没有帮助我解决问题!
我解决了,我发现关键是: Linux用户权限导致问题:stderr中发送的FastCGI:“主脚本未知”
因为PHP-FPM的默认user:group是apache:apache,但是您的代码目录是someBody:someBody。因此,您应该更改用户权限!
我写了一个博客来解决这个问题,您可以看到这个博客:
[在stderr中发送的Nginx FastCGI:“主脚本未知”] [1]`[1]:http : //geekhades.blogspot.com/2017/06/nginx-fastcgi-sent-in-stderr-primary.html