Описать проблему ↗

Сбои и доступность

Ошибка 500 на сайте: где искать настоящую причину

Ошибка 500 означает, что сервер не смог завершить запрос. Разберём, как найти полезные сведения и не пытаться угадать причину по общей странице ошибки.

Редакция «починимсайт» · Обновлено · 3 мин. чтения

Что происходит и с чего начать

Код 500 сообщает о внутреннем сбое, но не называет неисправный компонент. Причиной могут быть код, конфигурация, зависимость или ошибка при работе с данными. Поэтому одинаковая надпись у двух сайтов не означает одинаковое решение. Первым делом зафиксируйте адрес, время и действие перед отказом. Особенно важно, возникла ли ошибка при чтении страницы или после отправки формы: во втором случае данные могли частично сохраниться, даже если человек увидел неудачный ответ.

Что можно проверить самостоятельно

  1. Запишите точное время с часовым поясом и полный адрес страницы. Укажите действие: открытие, поиск, сохранение, загрузка файла или подтверждение покупки.
  2. Проверьте, затронут ли весь сайт или один сценарий. Если ошибка появилась после отправки данных, сначала посмотрите, сохранилась ли запись, прежде чем повторять действие.
  3. Сообщите о последних изменениях кода, настроек и окружения. Не включайте публичный показ подробных ошибок: посетителям не нужны пути файлов, запросы базы и внутренние параметры проекта.

Как понять результаты проверки

Для поиска используют журнал приложения и ошибки серверных служб за тот же момент. Последнее сообщение может быть следствием, поэтому важна последовательность: что произошло первым и какой запрос это вызвал. Если журнал пуст, проверяют, записывается ли он вообще и есть ли место на диске. Отсутствие строки в одном файле не доказывает отсутствие ошибки. Разработчик должен связать найденное сообщение с вашим сценарием и объяснить, какое изменение устраняет причину, а не только скрывает страницу 500.

Что проверяет разработчик

Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.

  1. Запишите URL, действие, время и идентификатор запроса, если он доступен. Проверьте, ломается весь сайт или один маршрут.
  2. Сопоставьте журналы веб-сервера, PHP и приложения. Внешняя страница ошибки может скрывать исключение, отсутствие файла или отказ базы.
  3. Сравните момент начала сбоя с деплоем, настройками окружения и изменением прав. Не ограничивайтесь последней видимой правкой шаблона.

На что обратить внимание

Одинаковый код 500 встречается при разных причинах: несовместимом коде, неверной конфигурации, недостатке памяти или недоступной зависимости. Исправление выбирается по первому значимому сообщению, а не по номеру HTTP.

Как исправляют причину

Воспроизведите ошибку на копии и исправьте подтверждённый участок. Если нужен откат, проверьте совместимость старого кода с уже изменённой базой. Подробные исключения оставляйте в закрытых журналах.

Как убедиться, что проблема решена

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

Повторите исходное действие и проверьте получившиеся данные. Затем воспроизведите понятный отрицательный сценарий, например неверное поле: сайт должен показать корректную подсказку вместо внутренней ошибки. Просмотрите журналы контрольного запроса. Если при прежних сбоях были частично сохранённые заказы или файлы, их состояние нужно разобрать отдельно, чтобы внешне восстановленная страница не скрыла незавершённые операции.