web-dev-qa-db-ja.com

Nginxがログを記録しないPHPエラー

いくつかの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が見つからないというエラーです。

6
James Linton

Php-fpmプール構成に以下を追加する必要があります。

catch_workers_output = 1

定義された各プールにこの行を追加する必要があります!

8
Fleshgrinder

同様の問題がありました。

PhpMyAdminをphp-fpm 7.0とnginxでCentOS7にデプロイしてみました。 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
venoel

php-fpmは、/var/log/php5-fpm.logまたは類似のすべてをスローします。

2
erickzetta

Nginx.confでerror_logの定義を確認してください。多分nginxはこのエラーログに何かを書き込みます。

PHPでファイルへのロギングを有効にすることもできます。

0

私にとっては、これはphp-fpmのログを独自のカスタムの場所にルーティングするupstartの問題であると思われました。

/var/log/upstart/php5-fpm.log

また、ubuntu Precise、12.04には、ロギング機能の欠如につながる可能性のあるバグがいくつかあります。 https://bugs.php.net/bug.php?id=61045 まだ実行している場合バージョン。

0
Kzqai

PHP display_errorsが無効になっている場合、PHPエラーはNginx 500エラーを返す可能性があります。

Php-fpmのログを確認してください。エラーが見つかるはずです。 CentOS 7の場合:

tail -f /var/log/php-fpm/www-error.log

PHPエラーを表示することもできます。php.iniで、次のように変更します。

display_errors = Off

へ:

display_errors = On

それが役に立てば幸い。

0
Antoine Martin