PHP错误包装?
回答
我不会没有任何工具会自动为你做;但我认为这并不难,但我承认,这将需要你一些时间:-(
只是为了抛出一些笔记,我脑海中记录的最好的解决方案错误是:
- 与
set_error_handler
- 代码的函数注册自己的错误处理,使得它记录错误+ GET/POST数据
- 也许这能/会/应以某种形式进行的数据库或结构化文件(SQLite数据库,可能是:li ght,快速,易于使用,不依赖于外部数据库服务器,...),而不仅仅是纯文件;稍后将更容易处理。
- 制定的 “报告” 应用......
- 这将需要一些时间,但是,如你所说的东西...
使用例如在手册页上给出的例子,可能会这样做:首先,声明错误处理函数:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
$str = '';
switch ($errno) {
case E_USER_ERROR:
$str .= "<b>My ERROR</b> [$errno] $errstr<br />\n";
$str .= " Fatal error on line $errline in file $errfile";
$str .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
break;
case E_USER_WARNING:
$str .= "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
$str .= "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default:
$str .= "Unknown error type: [$errno] $errstr<br />\n";
break;
}
$str .= print_r($_GET, true);
$str .= "\n";
file_put_contents(dirname(__FILE__) . '/log.txt', $str, FILE_APPEND);
/* Don't execute PHP internal error handler */
return true;
}
它获取有关错误的信息,准备一些依赖于错误类型的特定错误消息,并将所有错误消息和$_GET
的转储文件放入文件中。
(当然,你的网络服务器必须能够创建/写入到文件)
然后,注册该处理程序:
$old_error_handler = set_error_handler("myErrorHandler");
最后,只是为了测试,您会触发一些错误:
trigger_error("test of E_USER_ERROR", E_USER_ERROR);
trigger_error("test of E_USER_WARNING", E_USER_WARNING);
trigger_error("test of E_USER_NOTICE", E_USER_NOTICE);
现在,只要你拨打页面是这样的:http://tests/temp/temp.php?a=10&test=glop&hello=world
;您将获得包含此错误日志:
$ cat log.txt
<b>My ERROR</b> [256] test of E_USER_ERROR<br />
Fatal error on line 34 in file /home/squale/developpement/tests/temp/temp.php, PHP 5.3.0RC4 (Linux)<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
<b>My WARNING</b> [512] test of E_USER_WARNING<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
<b>My NOTICE</b> [1024] test of E_USER_NOTICE<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
在这种情况下,它是一个很丑陋的混乱......但你可能看到这一点;现在,你来建立在这得到正是你想要;-)
当然什么,现在,你还必须发展报告界面(用户方便,快捷,实用,和所有。 ..);这可能会是最长的部分到位:-(
而且,不幸的是,我不知道任何工具,可以帮助你......
(也许吧,如果你开始深化发展的东西,它可能会以开源方式发布?这可能会对其他人有用;-)我可能会对某些项目感兴趣,并且我确信我不是那个;-))
仍然,玩得开心!
+1:非常彻底的回应。 – Josh 2009-08-07 19:33:06
谢谢:-)(实际上,夫妇和我的同事的,在工作中,想过PHP缺乏这些类型的报告工具的事实......但是,不幸的是,我们没有建立一个很好的解决方案的时候..所以我们结束了一个包含数据的转储原始日志文件就像我前面转载)的例子;本来是很高兴有一个现有的解决方案,但^^ – 2009-08-07 19:35:44
我不知道任何免费工具来解析和显示PHP错误日志。
我已经使用set_error_handler()和set_exception_handler()为几个项目编写了测井功能。
我的处理程序类基本上做了_GET,_POST,_SERVER,_COOKIE,_SESSION等的print_r()和email/SMS me。大部分时间都能正常工作。我喜欢获取快速错误通知。 (所以我可以快速修复它)。
您已经突出显示了PHP社区工具中的缺陷。有人需要启动一个项目,记录错误并用一个漂亮的用户界面来解析/显示日志。嗯...
- 1. 包装VHDL包含错误
- 2. 安装包错误
- 3. 包装类错误
- 4. PHP安装错误
- 5. PHP包含错误
- 6. 错误安装A R包
- 7. 包装inputenc错误:RStudio
- 8. 错误建筑包装
- 9. Facebook.Client包安装错误
- 10. NuGet安装FarseerPhysics.Portable包错误
- 11. 安装包plyr的错误
- 12. Android包装错误 - ArrayIndexOutOfBoundsException
- 13. 错误而MSI安装包
- 14. 软件包安装错误
- 15. 错误安装[R包“AppliedPredictiveModeling”
- 16. 安装包错误(cl.exe时)
- 17. Python错误安装包
- 18. BSTS包安装错误
- 19. 的Android包装错误
- 20. MVC4包安装错误
- 21. 安装PHP SDK Couchbase错误
- 22. PHP包括路径错误
- 23. PHP包含路径错误();
- 24. YouTube PHP包装
- 25. 400对Apache/PHP AddHandler包装器的错误请求
- 26. 500内部服务器错误在Apache/PHP的AddHandler包装
- 27. 使用php://内存包装会导致错误
- 28. 从(PHP)流包装器错误消息中移除密码?
- 29. 在Linux(Amazone ami)中安装php-fpm无包可用错误
- 30. NuGet - JsonValue 0.5.0安装包错误
我很想知道,如果这样的事情存在的......虽然我自己也有点失望,因为我已经花了很多时间开发自己的... – Josh 2009-08-07 17:54:24