Nginx 不记录 PHP 错误

Jam*_*ton 7 nginx logging php-fpm 500-error

在我的网站上访问某些 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,有些 PHP 脚本可以正常工作,而有些则不行。所以 PHP 不存在全局问题,只是这些脚本中的某些内容导致 Nginx 抛出 500 错误。

我怎样才能找到这个问题的根源?唯一的问题error.log是找不到有关 favicon.ico 的错误。

Fle*_*der 8

您必须将以下内容添加到 php-fpm 池配置中:

catch_workers_output = 1
Run Code Online (Sandbox Code Playgroud)

您必须将此行添加到每个定义的池中!

  • 尝试获取有关 php-fpm 问题的更多信息,导致 php-fpm 和 nginx 出现错误 500。在 xlaravel.pool.conf 中,我有 `catch_workers_output = yes`。所以没有‘1’。这里哪一个是正确的? (2认同)

小智 5

我有类似的问题。

我尝试在 CentOS7 上使用 php-fpm 7.0 和 nginx 部署 phpMyAdmin。Nginx 向我显示了 500.html,但任何日志文件中都没有错误。我做了这一切

catch_workers_output = 1
Run Code Online (Sandbox Code Playgroud)

display_errors = On
Run Code Online (Sandbox Code Playgroud)

nginx 日志或 php-fpm 日志不包含任何错误字符串。

当我在 nginx.conf 中评论这一行时,我能够在浏览器页面中看到错误的内容。

#    error_page 500 502 503 504 /50x.html;
#    location = /50x.html {
#    }
Run Code Online (Sandbox Code Playgroud)

这帮助我理解了烦恼。