SO有很多文章提到这个错误代码:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream...
这可能意味着此错误消息或多或少是无用的。
该消息告诉我们,FastCGI 处理程序由于某种原因不喜欢它发送的任何内容。问题是有时我们不知道原因是什么。
所以我重新陈述这个问题——我们如何 调试 这个错误代码?
考虑我们有一个非常简单的站点的情况,只有 phpinfo.php 文件。此外,还有一个非常简单的 nginx 配置,如下所示:
server {
server_name testsite.local;
root /var/local/mysite/;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass fastcgi_backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
我们如何才能看到输出/日志究竟是什么 fastcgi_params 被发送到脚本?
我们如何才能看到实际的错误信息? 就我而言,我使用的是 php-fpm。日志中没有关于此错误的信息。日志不会为此错误附加任何行。 php-fpm 有详细模式吗?
/var/log/php-fpm/error.log
/var/log/php-fpm/www-error.log
我试图在 php-fpm.conf 文件中设置它
log_level = notice
这在 php-fpm.d/www.conf 文件中:
catch_workers_output = yes
原文由 101010 发布,翻译遵循 CC BY-SA 4.0 许可协议
要回答您的问题:
设置 access.log 条目:
重启 php-fpm 服务。
尝试访问您的页面
cat /var/log/www.access.log,您将看到如下访问日志:
- - 10/Nov/2016:19:02:11 +0000 "GET /app.php" 404 - - 10/Nov/2016:19:02:37 +0000 "GET /app.php" 404
要解决“主脚本未知”问题:
如果您看到“GET /”没有正确的 php 文件名,那么这是您的 nginx conf 问题。
如果您看到带有 404 的“GET /app.php”,则表示 nginx 正确传递了脚本文件名,但 php-fpm 无法访问此文件(用户“php-fpm:php-fpm”无权访问您的文件,这让我困了 3 个小时)
希望我的回答有帮助。