我正在尝试收集有关我们网站遇到内部服务器错误时的信息。我们有许多应用程序从未设置正确的错误日志记录,当问题发生时,我们的客户无法提供最好的可用信息。我的目标是:当出现500错误时,我想要收集有关问题发生位置的数据,例如:
- 用户所在页面
- 与该页面相关的任何数据(例如 $_GET、$_POST 等)
我已经在我们的服务器(IIS 7)上设置了自定义错误页面,并使用以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" />
<error statusCode="500" path="/error.php?code=500" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
在那个页面上,我只是使用var_dump函数打印$_POST和$_GET以查看是否有任何信息传递到错误页面,但没有。我的目标是在出现500错误时:
- 收集有关页面/用户在错误发生时的数据
- 向支持团队发送包含收集数据的问题邮件
是否有任何方法可以收集该数据并使自定义错误页面看到它?
error.php:
switch($ErrorCode){
case '500':
var_dump($_REQUEST, $_POST, $_GET);
echo "internal server error";
break;
}
在所有情况下,即使我提交了一个表单来获取此错误,$_POST仍然为空,而$_GET包含了这个(这是有道理的):array(2) {
["code"]=>
string(3) "500"
["500;http://icom-sbs/test_php"]=>
string(0) ""
}
4/19 更新
我尝试了一些想法,主要是将有用的数据存储在会话变量中。我试图在测试页面上将一些表单数据存储在会话变量中,但它从未进入会话。似乎服务器检测到页面上会出现错误,因此它甚至不执行页面上的任何代码,并立即执行错误页面。
error.php
文件中的代码吗? - pilsetnieks