服务器出现500错误的时候,让PHP显示错误信息

用PHP开发程序时,如果服务器出现500的时候,如果无法知道究竟是什么原因,就无法进行调试。

要让PHP显示错误信息,可以从PHP配置文件 (php.ini)或PHP程序文件入手,另外,如果与IIS整合的时候,还必须考虑web.config文件。

1.如果是与IIS整合的方式,则需要修改web.config文件,对<system.webServer>项添加<httpErros>条目:

<system.webServer>
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>
</system.webServer>

2.php.ini涉及的修改为:

error_reporting = E_ALL        设置错误记录的级别,E_ALL为报告所有 PHP 错误,通常在调试错误的时候设置为此。非调试时一般为E_ALL加排除形式。注意修改完后需要重启APACHE或IIS。

                     其它常见的值为:E_WARNING,E_NOTICE,E_DEPRECATED,这些通常作为排除形式,在非调试情况下与E_ALL搭配使用,比如:

                     E_ALL  ^  E_DEPRECATED  :  报告所有错误但不报告过期(或即将过期)的提示,通常用于旧程序上使用了即将过期方法产生错误时,比如使用了mysql_connect导致过期错误500.

                   

log_errors = On             On开启设置错误日志,将相应级别的错误记录到文件,与error_log项相搭配使用

error_log = c:phperror.log       配置错误日志文件位置,方便在浏览器不显示错误时可以将错误记录到文件。当log_errors为On且配置的日志文件没有权限时,错误信息不写入日志文件而是直接输出到浏览器 (这一点在“不想显示错误信息”时要特别注意)

display_errors = On    On如果有相应级别的错误,将错误显示到浏览器上。注意,受到error_reporting的限制,如果error_reporting为0(即不记录任何错误)时,则不显示任何错误,如果error_reporting为排除了某些形式时,则不显示某些形式的错误。对于“想要显示错误信息”时,log_errorserror_log不配置也行,直接配置display_errors为On

3. PHP程序文件涉及的修改为:

    程序文件中的修改项与PHP.INI文件大概一致,优化级高于PHP.INI。相应条项如:

        error_reporting(E_ALL);

        ini_set('log_errors','On');

        ini_set('error_log','./log.txt');

        ini_set('display_errors','On');

      对于不想修改PHP.INI然后重启APACHE或IIS的情况下,可以使用这种方式,如果不行,再修改PHP.INI。

原文地址:https://www.cnblogs.com/dreamyoung/p/13418880.html