nginx で PHP エラーが表示されない場合の解決方法

PHPz
リリース: 2023-03-28 17:07:15
オリジナル
1296 人が閲覧しました

日常の 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
ログイン後にコピー
次に、ファイルを保存して PHP-FPM を再起動します。 :

sudo systemctl restart php7.4-fpm
ログイン後にコピー

4. 概要

PHP エラー メッセージを非表示にするように Nginx Web サーバーを設定するコツは、Nginx サーバーと PHP プロセスの両方から設定することです。 。これにより、開発者はコード内のエラーを迅速に特定し、問題を迅速に修正し、コードの品質を向上させることができます。

以上がnginx で PHP エラーが表示されない場合の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート