有时在一些虚拟主机下(如HostMonster,BlueHost),Zencart网站会莫名奇妙输出空白页面,查看HTTP头,其实可以看到是500错误。
至于500错误的出现原因,一般是由于服务器脚本或是.htaccess有错误。
因为是空白页面没有输出具体的错误位置,所以排查起来很困难。
以下方法是让网站显示了具体的错误位置,错误内容等代码。

application_top.php放入

error_reporting(9);
 
function onError($errNo, $errMsg, $file, $line, $errcontext) {
        $report_title ='错误报告';
        $report_msg = "
    <strong>错误类型:</strong><blockquote>$errType($errNo)</blockquote>
    <strong>错误位置:</strong><blockquote>$file 第 $line 行</blockquote>
    <strong>错误信息:</strong><blockquote>$errMsg</blockquote>";
    //print_r($errcontext);
     echo $report_msg;
     echo '<hr>';
}
set_error_handler('onError');
将以上代码添加在
application_top.php 文件的适当位置。
再次打开网站会发xian具体的输出文件位置已经取出。

-------------------------------------------------------------------------------------------

调试PHP错误经常用到的一些

时间:12-05-24 栏目:问题及解决 作者:admin 评论:3 点击: 3,195 次

本文标签: debug , error , PHP

 
1
2
3
4
ini_set('error_log','errorLog.txt');#记录下来所有发现的错误到文件里去。
ini_set('display_errors', 1);#嗯,要显示错误
 
ini_set('memory_limit','512M');#有些错误的出现和内存使用有关系,把这个值调大试试看
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL);
ini_set("error_log","<日志文件名>")
ini_set("log_errors",1);

#所有 ini_set的内容都可以在php.ini中定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
function _e($msg,$type=''){
static $i=0;
$i++;
$error['msg'] = $msg;
$error['type'] = $type;
$GLOBALS[ERROR_STACK_NAME][$i] = $error;
return ERROR_STACK_NAME.$i;
}
/**
* 错误处理
*/
function onError($errNo, $errMsg, $file, $line, $errcontext) {
$errorlevels = array(
2048 => 'Warning',
2048 => 'Notice',
1024 => 'Warning',
1024 => 'Notice',
512 => 'Warning',
256 => 'Error',
128 => 'Warning',
64 => 'Error',
32 => 'Warning',
16 => 'Error',
8 => 'Notice',
4 => 'Error',
2 => 'Warning',
1 => 'Error');
//print_r(array('code'=>$errno, 'string'=>$errstr, 'file'=>$errfile, 'line'=>$errline,'codeinfo'=>$errorlevels[$errno]));
$t = error_reporting();
if (!($errNo & error_reporting())) {
return;
}
$errType = $errNo;
 
/** Get Advance Error msg **/
if(strpos($errMsg,ERROR_STACK_NAME)==0){
$i = substr($errMsg,strlen(ERROR_STACK_NAME));
if(isset($GLOBALS[ERROR_STACK_NAME][$i])){
$error = $GLOBALS[ERROR_STACK_NAME][$i];
$errMsg = $error['msg'];
$errType = $error['type'];
}
}
$errMsg = nl2br($errMsg);
 
if($errType=='smarty'){
$errType     = '模版系统错误';
 
}elseif ($errType=='sql'){
$errType     = '数据库操作错误';
}else{
$errType     = "PHP错误[$errType]";
}
 
$title = '系统错误';
 
$msg = "
<strong>错误类型:</strong><blockquote>$errType</blockquote>
<strong>错误位置:</strong><blockquote>$file $line 行</blockquote>
<strong>错误信息:</strong><blockquote>$errMsg</blockquote>
";
echo $msg;flush();
//msgBox($title,$msg,'',false,2);
exit();
}
function shutdown_function(){
 
$errorlevels = array(
2048 => 'Warning',
2048 => 'Notice',
1024 => 'Warning',
1024 => 'Notice',
512 => 'Warning',
256 => 'Error',
128 => 'Warning',
64 => 'Error',
32 => 'Warning',
16 => 'Error',
8 => 'Notice',
4 => 'Error',
2 => 'Warning',
1 => 'Error');
$error = error_get_last();
if($error){
echo '</tr></table></div></div></div></iframe><div style="clear:both"></div><div style=" background-color:#FFBB00"><pre>';
echo '最后一个错误:';
$error ['type']= $errorlevels[$error ['type']];
print_r($error );
debug_print_backtrace();
echo '</pre></div>';
}else{
echo '本页面无错误!';
}
 
}
register_shutdown_function('shutdown_function');#定义最后一个错误捕获
 
define('ERROR_STACK_NAME', 'ERROR_STACK');
set_error_handler('onError');#定义错误处理函数
error_reporting(9);

LH的方法是:

1.此错误前刚刚改过什么地方,从此入手
2.从链接入手,通过访问不同模块确定错误可能存在与某个模块
3.从代码入手,链接反复出错,需要查看框架其实处开始
4.从服务器配置入手,切换服务器配置
 
Z的方法是:
可看php的错误日志,文件要可写。
 
 

声明: 本文由(admin)原创编译,转载请保留链接: 调试PHP错误经常用到的一些

Zencart 500错误查找和解决方法的更多相关文章

  1. 【thinkphp 5 在nginx 环境下路由无法生效(404 500错误 )的解决方法】

      非常惭愧的说,由于之前一直使用的是windowservice,安装apache来进行服务器布置的,这种方式也是最简单最直接的方式, 但是由于php的服务大多都是linux栈的,咱们也不能落后呀,在 ...

  2. 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

    mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\    ...

  3. IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  4. ORA-04091错误原因与解决方法

    最近工作中写了一触发器报错:ORA-04091:table XX  is mutating, trigger/function may not see it. 下面通过官方文档及网友提供资料分析一下错 ...

  5. [代码]--IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  6. Hadoop常见错误问题及解决方法总结二

    问题导读:1.遇到问题该如何排除错误?2.看不到namenode的可能原因是什么?3.地址占用该如何解决?4.could only be replicatied to 0 nodes, instead ...

  7. coreseek常见错误原因及解决方法

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

  8. android 真机调试出现错误 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法。

    关于这个神奇的 内存不够错误的通常解决方法,网上大把,建议大家在尝试过了网上的方法后再来尝试下我的这种方法. 编译工具: android studio 测试真机:米 2 调试的时候出现:INSTALL ...

  9. 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法

    无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问.)” (Microsoft SQL Server,错误: 5120)的解决方法   问题描述: 在附加数据库到sql server时,附 ...

随机推荐

  1. 使用Java7提供的Fork/Join框架

    http://blog.csdn.net/a352193394/article/details/39872923 使用Java7提供的Fork/Join框架 2014-10-07 23:55 4818 ...

  2. 第3章 Java语言基础----声明成员变量,对变量进行赋值

    声明成员变量,对变量进行赋值的正确语句,如下图所示:

  3. 经典.net面试题目(1)

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :   私有成员, 在类的内部才可以访问. protected : 保 ...

  4. Eclipse报错 due to restriction on required library C:/Java/jdk1.7.51/jre/lib/rt.jar 解决方案

    Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案 Eclipse 编译时 ...

  5. Server对象(是属性)

    html, body { font-size: 10.5pt; } body { font-family: 微软雅黑, Helvetica, "Hiragino Sans GB", ...

  6. Nginx配置IP白名单和黑名单

    白名单设置,访问根目录 location / { allow 123.34.22.155; allow ; deny all; } 黑名单设置,访问根目录 location / { deny 123. ...

  7. wpa_supplicant wpa_cli 的使用说明

    wpa_supplicant -d -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -iwlan0 -B   会在/data/misc/wifi/下产生 ...

  8. SQL中的左连接与右连接有什么区别,点解返回值会不同?(转)

    例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 ...

  9. php 执行效率

    用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中 ...

  10. GameUnity 2.0 发布倒计时

    万众期待的 gameunity 网络游戏框架 已经完成了,现在在最后的检验调试阶段. 因为版本 改动非常之大,所以 版本号 从0.2版本 改成 2.0版本. gameunity事件部分,一如既往保持高 ...