PHP:更改死亡白页(WPOD)的HTML

PHP: Changing the HTML of the white page of death (WPOD)

在PHP中是否可以更改死亡白页(WPOD)的HTML? 目标是进行此更改,以便所有未经测试(未使用 if-else 阻止)致命错误都会显示此自定义页面。

例如,当 运行 所需的文件不存在时,以下内容将 return WPOD:

require 'some-non-existing-file.php';

但是我想return:

<!doctype html>
<html>
<head>
  <title>500</title>
  <style>body { background-color: #000; }</style>
</head>
<body></body>
</html>

我已尝试设置我的 <VirtualHost> 以包含和 ErrorDocument 指令:

ErrorDocument 500 /500.html

但根据this answer,Apache 开始处理PHP 后,它不会再触发Apache 错误文档。

这不会影响 WSOD,但您可以使用超出 if/else 语句的 PHP 代码进行一些错误处理。

如果您有您认为可能导致问题的代码,请将其包装在 try/catch 块中,如下所示:

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

然后在catch块中可以打印出代码抛出的异常。

http://php.net/manual/en/language.exceptions.php

您可以使用 error handler

检查错误
function checkErrorOnPage(){
  header("Location: 500.html");
}
set_error_handler('checkErrorOnPage');


require 'some-non-existing-file.php';