已调用关闭函数但未显示页面崩溃的原因

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