file_get_contents将不会在我的错误处理程序脚本中输出

时间:2018-11-22 10:55:40

标签: php file-get-contents file-exists

关于处理致命错误的自定义错误处理程序功能,我遇到了一个奇怪的问题。我网站上的错误是“致命错误:允许的内存大小为134217728字节已用尽”-我当然会解决。但我希望自定义错误页面显示是否再次发生。

以下代码回显数字1,但不显示我的“ error-page.php”,也不回显数字2。因此,感觉脚本在file_get_contents行上出错-但没有告诉我原因。

让事情变得更糟-在我的开发服务器上可以正常响应!但我想不出会造成这种影响的设置差异。

要尝试解决此问题,我已经回显了file_get_contents的完整路径,这是正确的-并且file_exists返回true-所以我很沮丧!

值得一提的是-error-page.php只是一个静态HTML页面,因此没有令人讨厌的代码!甚至不会file_get_contents一个test.txt。

error_reporting(-1);

set_error_handler("customErrorPage");


register_shutdown_function('shutdownFunction');

function shutdownFunction()
{

    $last_error = error_get_last();

    if ($last_error['type'] === E_ERROR) {
        fatalErrorHandler(E_ERROR, $last_error['message'], $last_error['file'], $last_error['line'], "");
    }
}

function fatalErrorHandler($error_level,$error_message,$error_file,$error_line,$error_context) {


    http_response_code(500);    


    $errorEmail = "<strong>Error on page:</strong> http://" . $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] . "<br />\n";
    $errorEmail .= "<strong>Message:</strong> " . $error_message . "<br />\n";
    $errorEmail .= "<strong>IP:</strong> " . getRealIpAddr() . "<br />\n";
    $errorEmail .= "<strong>Line:</strong> " . $error_line . "<br />\n";
    $errorEmail .= "<strong>File:</strong> " . $error_file . "<br />\n";


    if ((strpos($_SERVER['SERVER_NAME'], ".com") > 0)) {


        $to = "james@email.com";
        $subject = "FATAL Error on " . $_SERVER["SERVER_NAME"] . " - " . $error_message;
        $headers  = "MIME-Version: 1.0'" . "\r\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n";
        $headers .= "From: " . WEBSITE_COMPANY . " <errors@" . WEBSITE_DOMAIN . ">" . "\r\n";

        mail($to, $subject, $errorEmail, $headers);

        echo "1";
        echo file_get_contents($_SERVER["DOCUMENT_ROOT"] . "includes/error-page.php");
        echo "2";
        die;

    } else {
        echo $errorEmail;
        die;
    }
}

这是我在运行脚本时在屏幕上看到的内容:

  

严重错误:耗尽的134217728字节允许的内存大小(尝试   分配14907个字节)   /home/sure-wise/htdocs/objects/myaccount.php在2666行1

0 个答案:

没有答案