Вы можете использовать set_error_handler .Чтобы установить обратный вызов в случае ошибки и вы можете прекратить выполнение сценария в дальнейшем.
Обновление
Только что обнаруженный пользовательский обработчик ошибок не работает с E_ERROR и другими типами ошибок.Это в документации PHP
Следующие типы ошибок не могут быть обработаны с помощью определяемой пользователем функции: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, а также большинство файлов E_STR, где было установлено большинство файлов E_STR) называется.
Так что это обходной путь, который я нашел в Интернете, и я проверил его с вашим сценарием, и он работает нормально.
Добавьте следующий код в начало вашего сценария:
// execute on shutdown
function shutdown_handle(){
// get last error details if any
$lerror = error_get_last();
// if there is a Fatal (E_ERROR Type) las error then redirect to error page
if($lerror && $lerror['type'] == E_ERROR)
header('Location:error_page.php');
}
// register our shutdown handler
register_shutdown_function('shutdown_handle');
Здесь регистрируется функция отключения, которая выполняется при завершении скрипта из-за фатальной ошибки, независимо от того, включено или выключено display_errors.
И там мы проверяем, была ли последняя ошибка фатальнойодин, если так, мы перенаправляем на error_page.php.
Примечание. Следует обратить внимание на то, что перенаправление все еще работает, если display_errors включен.Я проверил это, и он работает нормально.Это может быть из-за того, что output_buffering включен на моем сервере.
Обновление 2:
Это полный файл PHP с вашим кодом с добавленным обработчиком завершения работы.Это работает очень хорошо и перенаправляет на error_page.php.Измените это на страницу, на которую вы хотите перенаправить .:
<?php
////////////////////////////////////////////////
// Shutdown handler to catch E_ERROR on shutdown
// even with display_errors OFF
// function which will execute on shutdown
function shutdown_handle(){
// get last error details if any
$lerror = error_get_last();
// if there is a Fatal (E_ERROR Type) last error
// then redirect to error page
if($lerror && $lerror['type'] == E_ERROR)
header('Location:error_page.php');
}
// register our shutdown handler
register_shutdown_function('shutdown_handle');
//////////////////////////////////////////////////
/////////////////////////////////////////////
ini_set("display_errors" , "1");
/////////////////////////////////////////////
$html = '
<table>
<tr>
<td><img src="img0.gif" /></td>
<td><img src="img1.gif" /></td>
<td><img src="img2.gif" /></td>
</tr>
</table>
';
/////////////////////////////////////////////
$dom = new domDocument();
$dom -> loadHTML($html);
$xpath = new domXPath($dom);
/////////////////////////////////////////////
$query = $xpath->query('.//table/tr/td');
$image = $query->item(1000000000); // <<---- item number
$img_src = $image->getElementsByTagName('img')->item(0)->getAttribute('src');
echo $img_src;
/////////////////////////////////////////////
?>