今天在写一个类时,要将PHP的默认错误处理函数接管,使用自定义的错误处理函数,在函数中,将错误封装成ErrorException后抛出,发现抛出的异常跟踪信息中,函数的参数错位了,下面是这个问题的示例代码:
<?php
class ErrorHandle
{
function __construct()
{
set_error_handler(array($this, 'errorHandle'));
}
function errorHandle($error_no, $error_msg, $file, $line)
{
throw new ErrorException($error_msg, 0, $error_no, $file, $line);
}
function test($x)
{
$this->error();
}
function error() {
$a = $b;
}
}
$err = new ErrorHandle();
$err->test('m');
输出的结果为:
<br />
<b>Fatal error</b>: Uncaught exception 'ErrorException' with message 'Undefined variable: b' in D:\website\localhost\index.php:18
Stack trace:
#0 D:\website\localhost\index.php(18): ErrorHandle->errorHandle()
#1 D:\website\localhost\index.php(15): ErrorHandle->error('m')
#2 D:\website\localhost\index.php(24): ErrorHandle->test()
#3 {main}
thrown in <b>D:\website\localhost\index.php</b> on line <b>18</b><br />
从上面的输出可以看出,参数'm'转递给了ErrorHandle->error();而不是实际上的ErrorHandle->test('m');即:
$err->test('m');
参数相当于移位了,不知道是什么原因.
但是当我安装了xdebug时,发现用它的异常输出中异常跟踪是正确的(xdebug会接管PHP内置的异常输出函数),如下:
( ! )
Fatal error: Uncaught exception 'ErrorException' with message
'Undefined variable: b' in D:\website\localhost\index.php on line 18
( ! ) ErrorException: Undefined variable: b in D:\website\localhost\index.php on line 18
Call Stack
#
Time
Memory
Function
Location
1 |
0.0499 |
66464 |
{main}( ) |
..\index.php:0 |
2 |
0.0504 |
67224 |
ErrorHandle->test( string(1) ) |
..\index.php:24 |
3 |
0.0505 |
67432 |
ErrorHandle->error( ) |
..\index.php:15 |
4 |
0.0505 |
67984 |
ErrorHandle->errorHandle( long, string(21), string(30), long, array(0) ) |
..\index.php:0 |
我用的PHP版本是5.2.10,以为是PHP的BUG,但又不确定,所以没有去bugs.php.net上提交,如果发现过类似问题的童鞋们,希望可以讨论一下
分享到:
相关推荐
在IT行业中,代码的安全性是至关重要的,尤其是对于使用PHP语言构建的应用程序。"php bug 扫描器 审计代码神器"是一个专门针对PHP代码...在日常开发中,我们应该重视代码审计,将其视为提高软件质量不可或缺的一部分。
2. 性能Bug:当软件在特定条件下运行缓慢、资源消耗过高或者响应时间过长时,就可能出现性能问题。这需要通过压力测试和负载测试来识别。 3. 兼容性Bug:软件在不同操作系统、浏览器或设备上的表现不一致,比如在...
然而,网上流传的版本可能与当前的环境不兼容,导致安装或运行过程中出现各种问题。本文将详细介绍如何在PHP7.1和MySQL5.0环境下成功部署并使用BugFree,以解决这些困扰。 一、BugFree简介 BugFree是一款基于Web的...
- 开发已修复的 bug:将 bug 状态置为已解决,同时添加说明验证版本号、错误原因、解决办法。 - 开发认为不是 bug:将 bug 状态置为已拒绝,指派给 bug 提出者,同时注明拒绝理由。 - 开发已修复,测试验证通过的...
如果在安装过程中出现与MySQL相关的错误,首先检查当前WAMP服务器中MySQL的版本是否符合bugfree的要求。若不匹配,需按照以下步骤调整: 1. **访问PHP设置**:打开WAMP控制面板,进入“PHP设置”,选择“PHP扩展”...
修复bug:批量上传错误提示问题 修复漏洞:修复了一个注入漏洞 PPFrame Exam简称PPExam是使用PHP开发的免费在线考试系统。PPExam 是一个通用的在线考试系统,现在基本能模拟所有考试。 学校可以使用PPExam组织...
* BUG: 修改了在IE上HTML属性值里输入JS代码时格式出现错误的问题。 * BUG: 修改了cssPath属性为空时加载首页的问题。 * BUG: 修改了当浏览器出现滚动条并拖动调整大小时控制不住的问题。 * BUG: 修改了embed代码...
解决weblogic923 BUG:8194412补丁包 weblogic日志报如下错误: Caused by: java.lang.RuntimeException: javax.management.remote.JMXServerErrorException: java.lang.AssertionError: Registered more than one ...
- 在安装过程中可能会遇到错误提示,如“ERROR OCCUR TO /bugfree/install.php”。 - **解决方案**: - 定位到`bugfree/Schema.php`文件,并使用文本编辑器打开。 - 将文件中所有的`TYPE=MyISAM`替换为`ENGINE=...
bug: fix a ton of old, broken cpu opcodes and CP15 logic bug: return Z1 and Z2 from TSC (fixes some touch logic) bug: gba slot save type detection improved bug: handle unusual rom headers more ...
- **缺陷类型**:将Bug归类为功能、用户界面、需求或性能问题,帮助开发团队识别问题的根源,如功能实现错误、界面显示问题、需求不符或性能下降。 通过规范化的Bug描述和详细的分类信息,Mantis可以帮助团队更高效...
* 开发认 为不是 bug:将 bug 状态置为已拒绝 * 开发已修复,测试验证通过的 bug:将 bug 状态置为关闭 * 开发已修复,测试验证不通过的 bug:将 bug 状态置为打回(激活) Bug 跟踪类别 -------------- * bug:...
但是,在使用ThinkPHP时,开发者可能会遇到一个让人头疼的问题——内存限制错误(Fatal error: Allowed memory size)。这通常发生在处理大量数据或执行内存密集型操作时,服务器分配给PHP脚本的内存被耗尽,从而...
在Linux环境下,BugFree是...记得在实际操作过程中,详细阅读文档和错误信息,这将有助于更快地解决任何可能出现的问题。同时,利用`linux安装bugfree.txt`文件提供的解决方案,可以更有效地处理安装过程中遇到的挑战。
* 安全性 BUG:包括数据有效性检测不合理、重要数据在传输中没有加密、缺少身份认证机制或认证不合理、数据产生缺乏随机性、网络安全性等。 * 可靠性 BUG:包括数据存贮的可靠性、业务处理的可靠性、硬件可靠性、...
脚步: $ meteor # won't work# While Building the application:# meteor-bootstrap-sass-bug.sass: Scss compiler error: undefined# /tmp/meteor-bootstrap-sass-bug/meteor-bootstrap-sass-bug.sass:1: error: ...
Mantis是一款开源的缺陷跟踪系统,它用于管理软件开发中的错误报告或称为“bug”的状态。在Mantis中,bug的状态变化流程对于整个项目的测试和运维过程至关重要,因为它确保了问题的有效跟踪和解决。以下是对Mantis中...