喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 11  1/2  1  2  > 
     
标题: 使用php错误处理  
  本主题被作者加入到他/她的 Blog 中  
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
使用php错误处理



<?php
error_reporting
(0);
function 
errlogs($errno$errmsg$filename$linenum$vars) {
    
$file $_SERVER['DOCUMENT_ROOT'] . '/error.log';//错误记录在网址根目录下的error.log文件
    
$mail '[email]yourmail@163.com[/email]';//需服务器支持
    
$dt date("Y-m-d H:i:s");
    
$errortype = array (
                
E_ERROR           => "Error",
                
E_WARNING         => "Warning",
                
E_PARSE           => "Parsing Error",
                
E_NOTICE          => "Notice",
                
E_CORE_ERROR      => "Core Error",
                
E_CORE_WARNING    => "Core Warning",
                
E_COMPILE_ERROR   => "Compile Error",
                
E_COMPILE_WARNING => "Compile Warning",
                
E_USER_ERROR      => "User Error",
                
E_USER_WARNING    => "User Warning",
                
E_USER_NOTICE     => "User Notice",
                
E_STRICT          => "Runtime Notice"
                
);
    
$user_errors = array(E_USER_ERRORE_USER_WARNINGE_USER_NOTICE);
    
$err "<errorentry>n";
    
$err .= "t<datetime>" $dt "</datetime>n";
    
$err .= "t<errornum>" $errno "</errornum>n";
    
$err .= "t<errortype>" $errortype[$errno] . "</errortype>n";
    
$err .= "t<errormsg>" $errmsg "</errormsg>n";
    
$err .= "t<scriptname>" $filename "</scriptname>n";
    
$err .= "t<scriptlinenum>" $linenum "</scriptlinenum>n";
    if (
in_array($errno$user_errors)) {
        
$err .= "t<vartrace>" wddx_serialize_value($vars"Variables") . "</vartrace>n";
    }
    
$err .= "</errorentry>nn";
    
error_log($err3$file);
    if (
$errno == E_USER_ERROR) @mail($mail"Critical User Error"$err);//严重的错误就发到邮箱
}
set_error_handler("errlogs");
?>
没有不会犯错的phper, php中的错误处理功能帮你找到这些错误。在第个执行程序的地方require上面代码。这样,知道原因所在,维护起来也得心应手了。

分析日志可以这样

$url= $_SERVER['DOCUMENT_ROOT'] . '/error.log';
$xmlstr =  implode("", file ($url));//file_get_contents($url);
$xmlstr =  "<?xml version='1.0'?>n<errs>n" . $xmlstr . "</errs>";
$xml = simplexml_load_string($xmlstr);

//下面呢,我就不写了,你可以修改你自已需要的输出格式。
echo "<pre>";
print_r($xml);
这里,所有代码仅供参加,每个人的想法多少有点不同,可随意按需修改使用。比如,将errlogs函数的err格式改为html格式。

论坛会掉字符,如有需要,可看附件。

[ 本帖最后由 qh663 于 2006-7-6 07:04 PM 编辑 ]


 附件: 您所在的用户组无法下载或查看附件



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-6 07:00 PM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] 上海国立机房|同普机房|凉城机房|服务器租用,月付无押金.
怎么这么多人看却没有人来顶呢
2006-7-11 10:30 AM#2
查看资料  发短消息  QQ  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] 我刚装的linux redhat 9,同时也安装了自带的apache了,可是我找不到,apache的根目录
帮顶
2006-7-11 10:32 AM#3
查看资料  发短消息  QQ  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] 在村子里搜索没有找到答案的问题!
2006-7-11 10:34 AM#4
查看资料  发短消息  QQ  顶部
 
yourdj
新手上路
Rank: 1



UID 72963
精华 0
积分 0
帖子 2
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-5-8
状态 离线
[推荐阅读] 母校相片,要毕业时拍的,要是有兄弟是那个破学校毕业的出来吼一声~!
不错,收了
2006-7-13 09:52 AM#5
查看资料  发短消息  顶部
 
font
论坛元老
Rank: 8Rank: 8
初级会员


UID 43400
精华 0
积分 36461
帖子 260
金钱 36461 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2004-11-1
状态 离线
[推荐阅读] 求助当天的浏览量代码怎么些


<?php
PHPBB3 
:)

function 
msg_handler($errno$msg_text$errfile$errline)
{
    global 
$cache$db$auth$template$config$user;
    global 
$phpEx$phpbb_root_path$starttime$msg_title$msg_long_text;

    
// Message handler is stripping text. In case we need it, we are possible to define long text...
    
if (isset($msg_long_text) && $msg_long_text && !$msg_text)
    {
        
$msg_text $msg_long_text;
    }

    switch (
$errno)
    {
        case 
E_NOTICE:
        case 
E_WARNING:

            
// Check the error reporting level and return if the error level does not match
            // Additionally do not display notices if we suppress them via @
            // If DEBUG_EXTRA is defined the default level is E_ALL
            
if (($errno & ((defined('DEBUG_EXTRA') && error_reporting()) ? E_ALL error_reporting())) == 0)
            {
                return;
            }

            
/**
            * @todo Think about removing the if-condition within the final product, since we no longer enable DEBUG by default and we will maybe adjust the error reporting level
            */            
            
if (defined('DEBUG'))
            {
                if (
strpos($errfile'cache') === false && strpos($errfile'template.') === false)
                {
                    
// remove complete path to installation, with the risk of changing backslashes meant to be there
                    
$errfile str_replace(array(realpath($phpbb_root_path), '\'), array('', '/'), $errfile);
                    $msg_text = str_replace(array(realpath($phpbb_root_path), ''), array('', '
/'), $msg_text);

                    echo '
<b>[phpBB DebugPHP Notice</b>: in file <b>' . $errfile . '</bon line <b>' . $errline . '</b>: <b>' . $msg_text . '</b><br />' . "n";
                }
            }
        
        break;

        case E_USER_ERROR:

            if (isset($db))
            {
                $db->sql_close();
            }

            if (isset($cache))
            {
                $cache->unload();
            }
            
            echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
            echo '
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">';
            echo '
<head>';
            echo '
<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
            echo '
<title>' . $msg_title . '</title>';
            echo '
<link href="' . $phpbb_root_path . 'adm/style/admin.css" rel="stylesheet" type="text/css" media="screen" />';
            echo '
</head>';
            echo '
<body id="errorpage">';
            echo '
<div id="wrap">';
            echo '    
<div id="page-header">';
            echo '        
<a href="' . $phpbb_root_path . '">Return to forum index</a>';
            echo '    
</div>';
            echo '    
<div id="page-body">';
            echo '        
<div class="panel">';
            echo '            
<span class="corners-top"><span></span></span>';
            echo '            
<div id="content">';
            echo '                
<h1>General Error</h1>';
            
            echo '                
<h2>' . $msg_text . '</h2>';
            
            if (!empty($config['
board_contact']))
            {
                echo '                
<p>Please notify the board administrator or webmaster : <a href="mailto:' . $config['board_contact'] . '">' . $config['board_contact'] . '</a></p>';
            }
            
            echo '            
</div>';
            echo '            
<span class="corners-bottom"><span></span></span>';
            echo '        
</div>';
            echo '    
</div>';
            echo '    
<div id="page-footer">';
            echo '        
Powered by phpBB &copy' . date('Y') . ' <a href="http://www.phpbb.com/">phpBB Group</a>';
            echo '    
</div>';
            echo '
</div>';
            echo '
</body>';
            echo '
</html>';
            
            exit;
        break;

        case E_USER_WARNING:
        case E_USER_NOTICE:

            define('
IN_ERROR_HANDLER', true);
        
            if (empty($user->data))
            {
                $user->session_begin();
            }

            // We re-init the auth array to get correct results on login/logout
            $auth->acl($user->data);

            if (empty($user->lang))
            {
                $user->setup();
            }

            $msg_text = (!empty($user->lang[$msg_text])) ? $user->lang[$msg_text] : $msg_text;
            $msg_title = (!isset($msg_title)) ? $user->lang['
INFORMATION'] : ((!empty($user->lang[$msg_title])) ? $user->lang[$msg_title] : $msg_title);

            if (!defined('
HEADER_INC'))
            {
                if (defined('
IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
                {
                    adm_page_header($msg_title);
                }
                else
                {
                    page_header($msg_title);
                }
            }

            $template->set_filenames(array(
                '
body' => 'message_body.html')
            );

            $template->assign_vars(array(
                '
MESSAGE_TITLE'    => $msg_title,
                '
MESSAGE_TEXT'    => $msg_text)
            );

            // We do not want the cron script to be called on error messages
            define('
IN_CRON', true);
            
            if (defined('
IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
            {
                adm_page_footer();
            }
            else
            {
                page_footer();
            }

            exit;
        break;
    }
}



set_error_handler('
msg_handler');
?>
[ 本帖最后由 font 于 2006-7-13 11:08 AM 编辑 ]
2006-7-13 11:07 AM#6
查看资料  访问主页  Blog  发短消息  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1232
帖子 2149
金钱 1232 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] 请问如何用正则把下面这段去掉
只能说很好!感觉最近我在退化



流量交换联盟
php教材价格比较网言情小说
2006-7-13 10:26 PM#7
查看资料  Blog  发短消息  QQ  顶部
 
applerr
新手上路
Rank: 1



UID 76816
精华 0
积分 0
帖子 11
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-21
状态 离线
[推荐阅读] 如何为SQLITE数据库设置密码呢
好!学习一下。
2006-7-21 04:02 PM#8
查看资料  发短消息  顶部
 
流浪的风
新手上路
Rank: 1
初级会员



UID 64731
精华 0
积分 1
帖子 46
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-6-14
状态 离线
[推荐阅读] 为什么我用GD生成的图片只能另存为BMP?
收藏了,尝试一下php的错误处理
2006-7-24 10:46 AM#9
查看资料  Blog  发短消息  QQ  顶部
 
sq1228
中级会员
Rank: 3Rank: 3
一般会员


UID 66008
精华 0
积分 267
帖子 239
金钱 267 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-19
来自 浙江宁波
状态 离线
[推荐阅读] 表单不能传递"<"和">"的问题
我感觉这位斑竹很尽责,帮顶了!
2006-7-24 11:57 AM#10
查看资料  发短消息  QQ  顶部
 11  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 5.600956 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP