服务器出现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       配置错误日志文件位置,方便在浏览器不显示错误时可以将错误记录到文件。

 

display_errors = On    如果有相应级别的错误,将错误显示到浏览器上。注意,受到error_reporting的限制,如果error_reporting为0(即不记录任何错误)时,则不显示任何错误,如果error_reporting为排除了某些形式时,则不显示某些形式的错误。

 

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。

 

 

注意点:

当要进行“不显示PHP错误信息”时,display_errors除了受error_reporting的限制,还受log_errors及error_log限制,如果log_erros为On并且error_log有设置且有权限,才不会显示错误信息,如果文件没有权限(不能写入),则即使设置display_errors为Off,仍然会输出错误。

 

上一篇:PHP的错误机制总结


下一篇:笨办法学python3代码练习ex23.py 字符串字节串字符编码