Подтвердить что ты не робот

Ловить все ошибки и перенаправлять на страницу с помощью php

Можно ли сказать, что универсальный метод php перенаправляет на определенную страницу какие-либо фатальные ошибки?

Скажем, у меня есть сайт со многими разными файлами, и я хочу скрыть проблемы (при их регистрации) и отправить пользователя на ту же страницу ошибок, независимо от того, что такое ошибка или на какой странице они находятся.

Позволяет просто притворяться ради аргумента, что я не хочу видеть ошибки, и страницы постоянно редактируются и обновляются роботами, которые вызывают ошибки, каждые 23-е или 51-е страницы редактируют.

Im ищет что-то, что, возможно, связано с файлом php.ini или htaccess, что-то, что я могу сделать на сайте.

4b9b3361

Ответ 1

Вы можете изменить страницу ошибок 500 по умолчанию в Apache с помощью директивы 'ErrorDocument':

ErrorDocument 500 /500.html

Это перенаправляет ошибку 500 Internal Server на 500.html. Вы также можете использовать страницу PHP и отправить ссылку на страницу.

Чтобы уловить ошибки, вы можете записать их в файл error.log. Используйте следующие две директивы в файле php.ini:

error_log = /var/log/httpd/error_php  
log_errors = On  

Не забудьте перезапустить Apache.

Ответ 2

См. set_error_handler:

set_error_handler - Устанавливает пользовательская функция обработчика ошибок

Простейший пример:

<?php

function errorHandler($n, $m, $f, $l) {
    header('Location: http://example.com/error.php');
}

set_error_handler('errorHandler');
...
?>

Ответ 3

Сначала измените ваш php.ini, чтобы подавить сообщения об ошибках и включить ведение журнала:

 display_errors=Off
 log_errors=On
 error_log=whatever/path

Записать обработчик ошибок (в отличие от set_error_handler, этот тоже улавливает смертельные случаи)

register_shutdown_function('errorHandler');
function errorHandler() {
   $err = error_get_last();
   if($err)
     include "error_page.php"; // your custom error page
}

Поместите этот код в файл и скажите php, чтобы он включал его в каждый requrest (см. auto_prepend_file @http://php.net/manual/en/ini.core.php)