web-dev-qa-db-ja.com

Nginxで致命的なエラーをブラウザに表示する

開発中、PHPにタイプミスまたは誤ったプログラミング;)で致命的なエラーを作成すると、ブラウザに空白のページが表示されます。致命的なエラーを確認し、それらが存在する行番号を見つけるために、生のnginxエラーログファイルを表示する必要があるのは非常に面倒です。 nginxを表示する方法が見つからないようですPHPブラウザで致命的なエラーが発生します。ここに私のnginx設定の関連部分を示します。

location @fpm {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_NAME index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param PATH_INFO $path_info;
}

エラーログに表示され、ブラウザページが空白になるエラーの例を次に示します。

2014/01/04 14:53:52 [error] 20082#0: *403 FastCGI sent in stderr:
"PHP message: PHP Fatal error:  Cannot redeclare class ClassName in FilePath on line 356"
while reading response header from upstream, client: 192.168.1.10,
server: servername, request: "GET URLPATH HTTP/1.1",
upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", Host: "Host",
referrer: "referer"

これが私のPHP info:

enter image description here

これが私のPHP-FPMconfです:

http://Pastebin.com/QkCTbBYj

そして私のPHP-FPMプールconf:

http://Pastebin.com/TZfZ8d7G

そして私のPHP-FPMphp.ini:

http://Pastebin.com/RsXRxduf

これらのエラーを表示するために私ができることを誰かが明らかにしてくれるといいのですが。

3
Kirk Ouimet

PHP-FPMプール構成でコメントを解除します

463行目php_flag[display_errors] = off

そしてそれを

php_flag[display_errors] = on

php-fpmを再起動することを忘れないでください

3
Jeredepp

Display_errorsの設定では、nginxでエラーを表示するには不十分であることがわかりました。

これを解決するための最後の秘訣は、fastcgi_intercept_errorsをオフにすることでした。

fastcgi_intercept_errors off;

通常、これはデフォルトでオンになっています(たとえば、fastcgi_params)。

0