首页 » PHP笔记 » PHP捕捉页面500错误并提示具体错误代码

PHP捕捉页面500错误并提示具体错误代码

高蒙 2015/12/24 15:10 3.1k浏览 2评论 PHP


我们经常在写代码的时候,程序一般在发出致命警告的时候页面会是一片空白。这个时候,我们就想获得准确的报错信息,以便我们去解决问题。

下面给大家介绍两种情况下,一种情况是我们的程序已经上线,在服务器获取报错信息的方法;一种情况是我们的程序还在本地调试阶段,获取报错的方法。

第一种:服务器端获取报错方法。

如果想获取错误信息也不难!主要是利用两个函数:
 
error_get_last() :获取最后一次发生错误信息:
 
我们可以把错误输出下面的数据结构:
Array
(
    [type] => 8
    [message] => Undefined variable: http://www.shuchengxian.com
    [file] => C:WWWindex.php
    [line] => 2
)
 
register_shutdown_function():在脚本停止执行时注册一个回调函数
 
有了这两个函数就可以监控致命错误了:
 
error_reporting(E_ALL); 

function cache_shutdown_error() {
    $_error = error_get_last();
    if ($_error && in_array($_error['type'], array(1, 4, 16, 64, 256, 4096, E_ALL))) {
        echo '<font color=red>你的代码出错了:</font></br>';
        echo '致命错误:' . $_error['message'] . '</br>';
        echo '文件:' . $_error['file'] . '</br>';
        echo '在第' . $_error['line'] . '行</br>';
    }
}

register_shutdown_function("cache_shutdown_error");

第二种:本地服务器获取报错的方法。 

下面来说说显示PHP错误提示消息的三个方法。
 
一:php.ini配置
 
php.ini配置中与此相关的有两个配置变量。下面是这两个变量及其默认值:
 
display_errors = Off
error_reporting = E_ALL & ~E_NOTICE
 
display_errors 变量的目的很明显 —— 它告诉PHP是否显示错误。默认值是 Off。
 
现在我们的目的是显示错误提示,那么:display_errors = On
 
E_ALL,这个设置会显示从不良编码实践到无害提示到出错的所有信息。
E_ALL 对于开发过程来说有点太细,因为它连变量未初始化也显示提示,而这一点正是PHP“高级”的一个特征。
幸好,error_reporting的默认值是“E_ALL & ~E_NOTICE”,这样就只看到错误和不良编码了,对程序无不利的提示则不会显示。 
修改php.ini后需要重新启动Apache,这样才可以在apache中生效,当然你如果只在命令行下测试程序,是不需要这一步的。
 
配置php程序:
 
<?php
error_reporting(0); //禁用错误报告
error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告运行时错误
error_reporting(E_ALL); //报告所有错误
?>



相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    485

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。