nginx不提示php错误怎么解决

在日常的网站开发中,我们经常会使用Nginx作为Web服务器,并配合PHP作为后端语言。然而有时候我们会发现,即使PHP中存在错误,Nginx也不会提示任何信息,这让我们调试程序非常困难。本文将介绍一些解决方法,使Nginx能够提示PHP错误信息。

一、理解错误报告及搜集方法

在部署服务器的过程中,我们习惯性地关闭了PHP的错误输出,这是因为PHP的错误信息可能会导致安全隐患暴露,或导致信息泄露。但是在开发过程中,我们需要这些错误信息来定位问题和调试程序。

解决这一问题的方法之一是打开PHP的错误输出。在PHP中我们可以设置错误日志级别或者即时报告错误。同时,我们也可以在Nginx的配置文件中添加一些选项来显示PHP错误信息。

二、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用于向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
登录后复制

四、总结

配置Nginx Web服务器提示PHP错误信息隐藏的技巧在于,从Nginx服务器和PHP进程两个方面来设置。这可以帮助开发者快速找出代码中的错误,有助于快速修复问题并提高代码质量。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发