gpt4 book ai didi

PHP 错误包装器?

转载 作者:可可西里 更新时间:2023-11-01 00:53:51 25 4
gpt4 key购买 nike

我不知道我使用的术语是否正确,但我正在寻找的是与您使用 zend 服务器获得的类似的东西。看看this .

它看起来像是一个错误,它会转储请求以及堆栈跟踪和函数参数以及一些其他信息。它使您可以在漂亮的界面中查看它。我知道这对我来说并不难,因为你总是可以进行错误回调,但如果存在这样的东西(免费),我宁愿使用它而不是重新发明轮子。

最佳答案

我没有任何工具可以自动为您执行此操作;但它并不难开发,我认为......不过,我承认,这会花费你一些时间:-(

只是添加一些注释,我想到的记录错误的最佳解决方案是:

  • set_error_handler注册你自己的错误处理器
  • 编写函数代码,以便它记录错误 + GET/POST 数据
    • 也许这可以/应该/应该在某种数据库或结构化文件中完成(一个 SQLite 数据库,也许:轻便、快速、易于使用,不依赖于外部数据库服务器,. ..),而不仅仅是普通文件;以后会更容易处理。
  • 开发“报告”应用程序...
    • 不过,正如您所说,这需要一些时间...


使用手册页上给出的示例,可能会这样做:首先,声明您的错误处理函数:

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
)

在这种情况下,这是一团糟……但你可能明白了;现在,由您决定在此基础上获得您想要的东西 ;-)


当然,现在,您还必须开发报告界面(用户友好、快速、可用等等……);这可能是最长的部分 :-(

而且,不幸的是,我不知道有什么工具可以帮助您...
(也许,如果您开始开发某些东西,它可以作为开源发布?这可能对其他人有用;-)我可能对某些项目感兴趣,但我确定我不会那个 ;-) )

不过,玩得开心!

关于PHP 错误包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com