Этот вопрос закрыт для ответов, так как повторяет вопрос Как отобразить кастомную страницу ошибки 500?
@razrab228
html, люблю больше php.

Как перенаправлять пользователя, если возникла ошибка 500?

На сайте могут возникать ошибки http (404, 401, 500 и т.д.), как можно показывать пользователю вместо "страница недоступна", другую страницу, где будет описана сама ошибка?
пробовал в htacces:
ErrorDocument 500 /error?error=500
но это не работает, показывает "страница недоступна"
  • Вопрос задан
  • 412 просмотров
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
иногда на сайте могут возникать ошибки http(404, 401, 500 и т.д.),
Это абсолютно разные ошибки, и обрабатываться должны по разному.
404 должна обрабатываться самим движком сайта, отдавать именно запрошенный урл без перенаправления, и отдавать 404 статус, в том числе для того чтобы поисковые роботы вывели страницу из индекса.
401 скорее всего вообще ошибка настройки серверной части и прав на папки/файлы, редко когда эта ошибка вываливается просто так...
500 вообще не является конкретной ошибкой, это скорее общее оповещение что на конкретной странице что-то пошло не так или сайт в целом не работает. Упрощенно это любой фатал ерор, скрытый настройками вывода ошибок, + некоторые ошибки системного характера.

пробывал в htacces:
ErrorDocument 500 /error?error=500
Логично что если сайт не работает, то и любое обращение к нему будет вызывать ту же 500 ошибку. Единственный способ что-то отобразить - статика, просто хтмл страничка оформленная в стиле сайта с нужным статичным контентом...
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Насколько я знаю, у РНР есть какие-то проблемы во взаимодействии с апачем.
Для 400-х ErrorDocument работает, а для 500-х почему-то нет.

Но на самом деле это и не требуется. Все ошибки РНР прекрасно может обработать и сам.
Тем более, что заголовок вопроса представляет собой оксюморон (не путать с известным говорителем слов под музыку).
Перенаправлять при возникновении ошибки никуда нельзя: потому что это разные НТТР коды ответа. И хотя в тексте вопроса мы видим, что никакого перенаправления и не планировалось, но заголовок из песни не выкинешь.

Поэтому куда проще (и удобнее) настроить обработчик ошибок в РНР, и для 99.99% ошибок он будет показывать нужный HTML сам.
Для этого понадобятся функции set_exception_handler() и register_shutdown_function()
примеров реализации море, например здесь: https://phpdelusions.net/articles/error_reporting#code
Только error handler на самом деле не нужен, потому что не фатальные ошибки не вызывают 500-ю ошибку и могут просто логироваться автоматом, без всякого хендлера.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы