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块中可以打印出代码抛出的异常。
您可以使用 error handler
检查错误
function checkErrorOnPage(){
header("Location: 500.html");
}
set_error_handler('checkErrorOnPage');
require 'some-non-existing-file.php';
在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块中可以打印出代码抛出的异常。
您可以使用 error handler
检查错误function checkErrorOnPage(){
header("Location: 500.html");
}
set_error_handler('checkErrorOnPage');
require 'some-non-existing-file.php';