Можно ли в PHP изменить HTML-код «Белой страницы смерти» (WPOD)?
Цель состоит в том, чтобы сделать это изменение, чтобы все непроверенные (не предотвращенные с помощью if-else) фатальные ошибки отображали эту пользовательскую страницу.
Например, при запуске следующее вернет WPOD, если требуемый файл не существует:
require 'some-non-existing-file.php';
Но я хотел бы вернуться:
<!doctype html>
<html>
<head>
<title>500</title>
<style>body { background-color: #000; }</style>
</head>
<body></body>
</html>
Я пытался настроить мой <VirtualHost>
включить и ErrorDocument
директива:
ErrorDocument 500 /500.html
Но согласно этот ответ, после того как Apache начнет обрабатывать PHP, он больше не будет вызывать документ об ошибке Apache.
Вы можете проверить ошибку, используя обработчик ошибок
function checkErrorOnPage(){
header("Location: 500.html");
}
set_error_handler('checkErrorOnPage');
require 'some-non-existing-file.php';
Это не влияет на WSOD, но вы можете выполнить некоторую обработку ошибок с помощью своего PHP-кода, выходящего за пределы операторов if / else.
Если у вас есть код, который, по вашему мнению, может вызывать проблемы, поместите его в try/catch
блокировать так:
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Затем в блоке catch вы можете распечатать исключение, которое выдается кодом.