一、理解錯誤報告及搜集方法
在部署服務器的過程中,我們習慣性地關閉了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
喜歡就支持一下吧
相關推薦