已调用关闭函数但未显示页面崩溃的原因
shutdown function called but does not show why page crashed
我所有的页面都有关闭功能,它会向我发送一封包含页面参数的电子邮件。我用它来解决几个页面上的问题。但是一个页面不断崩溃但不显示任何调用参数。如果我调用不带参数的页面,它工作正常。我已尝试点击页面上的所有链接,它们不会导致任何错误。在写这个 post 时,我意识到该页面允许上传文件。也许有人正在上传一些导致页面崩溃的恶意文件。来电者在印度,airtelbroadband.in。但如果是这种情况,关闭功能将传递我电子邮件中的文件,因为它传递到与 POST.
相同的页面
这是对我的关闭函数的调用
register_shutdown_function('shutdown', $_SERVER['REQUEST_URI'],file_get_contents("php://input"));
error_reporting(E_ERROR);
这里是关机功能
function shutdown($pagename,$post){
$last_error = error_get_last();
if($last_error['type'] === E_ERROR){
mail ("mynames@gmail.com", "ERROR REPORT", "https:/mydomain.com$pagename post->$post<-","From: " . "ErrorReport@mydomain.com");
}
}
这是我收到的电子邮件的内容:
https:/mydomain.com/gpx_waypoint_edit.php post-><-
没有任何用处。当这个功能起作用时,我在我的电子邮件中得到了导致页面崩溃的参数,并且我能够修复它们。这是唯一一个崩溃的页面,我没有得到任何提示。
我提到这个页面可以上传文件。这是执行上传的代码。我应该把支票放在这里吗?
<form enctype='multipart/form-data' action="<?echo $PHP_SELF?>" method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='100000' />
<input name="toProcess" type="file"><br>
Number of New Waypoints <input type="text" name="lines" size="5"><br>
<input type='submit' value='Submit' />
</form>
<?
if (is_uploaded_file($_FILES['toProcess']['tmp_name'])) $filename = $_FILES['toProcess']['tmp_name'];
else $filename == "";
?>
最后一点。我没有 运行 SQL 数据库,所以我得到的所有注入攻击都无济于事。我刚给他们发了一条 403 消息,所以他们什么也做不了。
基本上我搞不懂为什么这个页面会崩溃。如果有人能帮助我理解,我将不胜感激。
您并没有真正了解代码中发生的事情的全貌,因为您的电子邮件不包含实际的异常消息,而且您也没有记录它。
您可以像这样在电子邮件中包含错误:
$message .= "\n" . print_r( $last_error, true );
为了额外的稳健性,您应该配置 PHP 将所有错误、警告和通知记录到服务器上的日志文件中,您可以在遇到问题时检查该日志文件以寻找线索。有关如何设置的详细信息,请参阅 this guide。
我所有的页面都有关闭功能,它会向我发送一封包含页面参数的电子邮件。我用它来解决几个页面上的问题。但是一个页面不断崩溃但不显示任何调用参数。如果我调用不带参数的页面,它工作正常。我已尝试点击页面上的所有链接,它们不会导致任何错误。在写这个 post 时,我意识到该页面允许上传文件。也许有人正在上传一些导致页面崩溃的恶意文件。来电者在印度,airtelbroadband.in。但如果是这种情况,关闭功能将传递我电子邮件中的文件,因为它传递到与 POST.
相同的页面这是对我的关闭函数的调用
register_shutdown_function('shutdown', $_SERVER['REQUEST_URI'],file_get_contents("php://input"));
error_reporting(E_ERROR);
这里是关机功能
function shutdown($pagename,$post){
$last_error = error_get_last();
if($last_error['type'] === E_ERROR){
mail ("mynames@gmail.com", "ERROR REPORT", "https:/mydomain.com$pagename post->$post<-","From: " . "ErrorReport@mydomain.com");
}
}
这是我收到的电子邮件的内容:
https:/mydomain.com/gpx_waypoint_edit.php post-><-
没有任何用处。当这个功能起作用时,我在我的电子邮件中得到了导致页面崩溃的参数,并且我能够修复它们。这是唯一一个崩溃的页面,我没有得到任何提示。
我提到这个页面可以上传文件。这是执行上传的代码。我应该把支票放在这里吗?
<form enctype='multipart/form-data' action="<?echo $PHP_SELF?>" method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='100000' />
<input name="toProcess" type="file"><br>
Number of New Waypoints <input type="text" name="lines" size="5"><br>
<input type='submit' value='Submit' />
</form>
<?
if (is_uploaded_file($_FILES['toProcess']['tmp_name'])) $filename = $_FILES['toProcess']['tmp_name'];
else $filename == "";
?>
最后一点。我没有 运行 SQL 数据库,所以我得到的所有注入攻击都无济于事。我刚给他们发了一条 403 消息,所以他们什么也做不了。
基本上我搞不懂为什么这个页面会崩溃。如果有人能帮助我理解,我将不胜感激。
您并没有真正了解代码中发生的事情的全貌,因为您的电子邮件不包含实际的异常消息,而且您也没有记录它。
您可以像这样在电子邮件中包含错误:
$message .= "\n" . print_r( $last_error, true );
为了额外的稳健性,您应该配置 PHP 将所有错误、警告和通知记录到服务器上的日志文件中,您可以在遇到问题时检查该日志文件以寻找线索。有关如何设置的详细信息,请参阅 this guide。