PHP自动捕捉页面500错误示例

   通常程序发生致命错误的时候页面空白,想获取错误信息也不难!主要是利用两个函数:

  error_get_last() 获取最后一次发生错误信息:结构如下:

 代码如下  

Array
(
    [type] => 8
    [message] => Undefined variable: http://www.111cn.net
    [file] => C:WWWindex.php
    [line] => 2
)

  register_shutdown_function()在脚本停止执行时注册一个回调函数

  有了这两个函数就可以监控致命错误了:

 代码如下  

error_reporting(E_ALL); //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); 
?>

时间: 2024-10-31 21:06:09

PHP自动捕捉页面500错误示例的相关文章

IIS测试打不开页面500错误

IIS出现500错误.错误类型:Microsoft JET Database Engine (0x80004005) 怎么解决?非常简单,看看下面的案例分析与解决的办法就会明白了. 这是conn.asp文件的内容: <% dim conn,rs,datapath set conn=Server.CreateObject("ADODB.Connection") datapath="db1.mdb" dbpath=Server.MapPath(datapath)

Iframe 自动适应页面的高度示例代码

 这篇文章主要介绍了Iframe如何自动适应页面的高度,需要的朋友可以参考下    代码如下: function SetCwinHeight(obj) {  var cwin = obj;  if (document.getElementById) {  if (cwin && !window.opera) {  if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight)  cwin.height

Iframe 自动适应页面的高度示例代码_javascript技巧

复制代码 代码如下: function SetCwinHeight(obj) { var cwin = obj; if (document.getElementById) { if (cwin && !window.opera) { if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) cwin.height = cwin.contentDocument.body.offsetHeight +

Laravel5.1自定义500错误页面示例_php实例

本文实例讲述了Laravel5.1自定义500错误页面的方法.分享给大家供大家参考,具体如下: Laravel 5.1中500错误是程序错误,程序错误一定是系统自带的500错误,可以通过以下步骤简单实现自定义500错误页面. 编辑PHP文件app/Exceptions/Handler.php内容如下: public function render($request, Exception $e) { if ($e instanceof ModelNotFoundException) { $e =

Laravel5.1自定义500错误页面示例

本文实例讲述了Laravel5.1自定义500错误页面的方法.分享给大家供大家参考,具体如下: Laravel 5.1中500错误是程序错误,程序错误一定是系统自带的500错误,可以通过以下步骤简单实现自定义500错误页面. 编辑PHP文件app/Exceptions/Handler.php内容如下: public function render($request, Exception $e) { if ($e instanceof ModelNotFoundException) { $e =

php 5.3访问Yii框架自带的例子系统时页面打印500错误

访问Yii框架自带的例子系统时,页面打印500错误: Error 500 date() [<a href='function.date'>function.date</a>]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

web.xml-移动网络显示不了500错误页面

问题描述 移动网络显示不了500错误页面 web.xml配置了500错误页面,后台抛出异常,使用wifi可以正常跳转到500页面,但是使用移动网络的时候,只显示Internal Server Error,谁有碰到过? 解决方案 也许你的手机内置了代理加速软件或者插件,那么连接不上,代理服务器会返回它自己的提示. 解决方案二: 是你的网络异常,和页面无关 解决方案三: 网络异常!网络异常!网络异常! 解决方案四: 网络有问题 解决方案五: 网络异常,与页面无关!

不忍直视的500错误页面.

问题描述 不忍直视的500错误页面.能进来不容易啊. 解决方案 解决方案二:你这是要散分的节奏么?前排接分.....解决方案三:你这是要散分的节奏么?前排接分.....解决方案四:哈哈,4连发,接分解决方案五:添加失败,请重试!解决方案六: 解决方案七:找csdn补偿另外400分解决方案八: 解决方案九: 解决方案十: 解决方案十一:结贴多了影响不好.

SSH搭建的框架,刷新页面时报500错误

问题描述 用SSH搭建了web工程的框架,在没编写web.xml文件时,页面能正常显示,后来涉及到业务处理需要配置web.xml,但是配置好后刷新页面就报500错误.以下是MyEclipse控制台报的错误:这是我的项目架构,目前尚在写注册功能:hibernate配置文件及web.xml网上查了下,发现那个错误的原因是使用了Hibernate4的缘故,但是我配置的明明是hibernate3,而且配置文件显示也是hibernate3.一直卡在这个问题上不知道怎么解决 解决方案 解决方案二:浏览器报的