apache2.4 — PHP: изменение HTML-кода белой страницы смерти (WPOD)

Можно ли в 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.

0

Решение

Вы можете проверить ошибку, используя обработчик ошибок

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


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

Другие решения

Это не влияет на 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 вы можете распечатать исключение, которое выдается кодом.

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

2