当我访问我网站上的一些 PHP 脚本时,我收到了可怕的 500 错误消息。我想知道出了什么问题,如何修复它,但 Nginx 没有在我指定的日志文件中记录任何 PHP 错误。这是我的服务器块:
server {
listen 80;
server_name localhost;
access_log /home/whitey/sites/localhost/logs/access.log;
error_log /home/whitey/sites/localhost/logs/error.log error;
root /home/whitey/sites/localhost/htdocs;
index index.html index.php /index.php;
location / {
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/phpfpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
}
}
请注意,有些 PHP 脚本可以正常工作,而其他脚本则不行。因此,PHP 不存在全局问题,只是这些脚本中的某些内容导致 Nginx 抛出 500 错误。
我怎样才能查明真相?唯一的错误error.log
是未找到 favicon.ico。
答案1
您必须将以下内容添加到 php-fpm 池配置中:
catch_workers_output = 1
您必须将此行添加到每个定义的池中!
答案2
我遇到了类似的问题。
我尝试在 CentOS7 上使用 php-fpm 7.0 和 nginx 部署 phpMyAdmin。Nginx 显示 500.html,但任何日志文件中都没有错误。我做了所有这些
catch_workers_output = 1
和
display_errors = On
nginx 日志和 php-fpm 日志都不包含任何错误字符串。
当我在 nginx.conf 中注释掉这行时,我能够在浏览器页面中看到错误的内容。
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
这帮助我理解了麻烦。
答案3
php-fpm
把所有东西都扔进去/var/log/php5-fpm.log
或类似的东西。
答案4
对我来说,这似乎是 upstart 的问题,它将 php-fpm 的日志路由到它自己的自定义位置,例如:
/var/log/upstart/php5-fpm.log
ubuntu Precise 12.04 也存在一些错误,可能导致缺乏日志记录能力:https://bugs.php.net/bug.php?id=61045如果您仍在运行该版本。