nginx不提示php錯誤如何解決

一、理解錯誤報告及搜集方法

在部署服務器的過程中,我們習慣性地關閉了PHP的錯誤輸出,這是因為PHP的錯誤信息可能會導致安全隱患暴露,或導致信息泄露。但是在開發過程中,我們需要這些錯誤信息來定位問題和調試程序。

解決這一問題的方法之一是打開PHP的錯誤輸出。在PHP中我們可以設置錯誤日志級別或者即時報告錯誤。我們可以在nginx的配置文件中添加一些選項,以顯示PHP錯誤信息。

二、Nginx 配置文件中的 PHP 錯誤設置

立即學習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用于向Nginx服務器請求的PHP進程傳遞錯誤信息。 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

三、PHP 配置文件中的錯誤設置

PHP的配置文件一般為/etc/php/7.4/fpm/php.ini,找到error_reporting這一行,將其設置為顯示所有的錯誤信息:

error_reporting?=?E_ALL

然后找到display_errors這一行,將其設置為On,這樣就可以在網頁上顯示所有的PHP錯誤信息了:

display_errors?=?On

然后保存文件并重啟PHP-FPM:

sudo?systemctl?restart?php7.4-fpm

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享