日常の Web サイト開発では、Web サーバーとして Nginx を使用し、バックエンド言語として PHP を使用することがよくあります。ただし、PHP にエラーがあっても、Nginx が何の情報も表示しないことがあり、そのためプログラムのデバッグが非常に困難になります。この記事では、Nginx が PHP エラー メッセージを表示できるようにするためのいくつかの解決策を紹介します。
1. エラーのレポートと収集方法を理解する
サーバーをデプロイするプロセスでは、PHP エラーが原因で、PHP のエラー出力を習慣的にオフにします。 . 情報によってセキュリティ上のリスクが生じたり、情報漏洩につながる可能性があります。しかし、開発プロセスでは、問題を特定してプログラムをデバッグするために、これらのエラー メッセージが必要になります。
この問題を解決する 1 つの方法は、PHP のエラー出力をオンにすることです。 PHP では、エラー ログ レベルを設定したり、エラーをすぐに報告したりできます。同時に、Nginx 構成ファイルにいくつかのオプションを追加して、PHP エラー メッセージを表示することもできます。
2. Nginx 設定ファイルの PHP エラー設定
Nginx サーバー設定ファイル (通常は /etc/nginx/nginx.conf
) を開きます。 http{}
ブロックを見つけて、次の設定を追加します。
server { # server settings ... # server block location rules ... # php-fpm status check location ~ ^/(status|ping)$ { access_log off; # php-fpm settings fastcgi_param PHP_VALUE "error_reporting=E_ALL"; include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } # php error logs location ~ \.php$ { fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log"; include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } # error pages error_page 404 /404.html; error_page 500 502 503 504 /50x.html; # static files location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ { expires 7d; access_log off; } # disable direct access to .ht files location ~ /\.ht { deny all; } }
その中で、fastcgi_param PHP_VALUE
は、リクエストされた PHP プロセスにエラー情報を渡すために使用されます。 Nginxサーバー。 error_reporting=E_ALL
は、すべてのエラー レベル情報を出力することを意味します。 fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log";
は、PHP エラー情報を /var/log/nginx/php_error.log
ファイルに出力することを意味します。
設定ファイルを変更した後、Nginx サーバーをリロードします:
sudo systemctl reload nginx
3. PHP 設定ファイルの設定が間違っています
PHP 設定ファイルは次のとおりです。一般 /etc/php/7.4/fpm/php.ini
の場合、error_reporting
という行を見つけて、すべてのエラー メッセージを表示するように設定します。
error_reporting = E_ALL
次に、# を見つけます。 ##display_errorsこの行を
On に設定すると、すべての PHP エラー メッセージが Web ページに表示されます:
display_errors = On
sudo systemctl restart php7.4-fpm
4. 概要
PHP エラー メッセージを非表示にするように Nginx Web サーバーを設定するコツは、Nginx サーバーと PHP プロセスの両方から設定することです。 。これにより、開発者はコード内のエラーを迅速に特定し、問題を迅速に修正し、コードの品質を向上させることができます。以上がnginx で PHP エラーが表示されない場合の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。