開発中、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:
これが私のPHP-FPMconfです:
そして私のPHP-FPMプールconf:
そして私のPHP-FPMphp.ini:
これらのエラーを表示するために私ができることを誰かが明らかにしてくれるといいのですが。
PHP-FPMプール構成でコメントを解除します
463行目php_flag[display_errors] = off
そしてそれを
php_flag[display_errors] = on
php-fpmを再起動することを忘れないでください
Display_errorsの設定では、nginxでエラーを表示するには不十分であることがわかりました。
これを解決するための最後の秘訣は、fastcgi_intercept_errorsをオフにすることでした。
fastcgi_intercept_errors off;
通常、これはデフォルトでオンになっています(たとえば、fastcgi_params)。