Что означает код 500
Код 500: общий ответ о внутренней ошибке сервера. Он сообщает о результате запроса, но не указывает конкретную неисправность. Два сайта с одинаковой страницей ошибки могут иметь совершенно разные причины. Это определение приведено в справочнике HTTP-кодов MDN.
Поэтому сообщение "у меня 500" полезно дополнить адресом страницы и действием: открыть каталог, отправить форму, сохранить товар или оформить заказ. Это сразу делает запрос проверяемым.
Сначала соберите факты
- Адрес и действие. Какая страница и какой шаг приводят к сбою?
- Время. Запишите дату, время и часовой пояс. Для плавающей ошибки полезны несколько точных примеров.
- Масштаб. Не работает весь сайт, только вход в кабинет или один заказ?
- Последнее изменение. Обновление кода, перенос, смена PHP, новый модуль или правка конфигурации.
- Повторяемость. Возникает ли ошибка каждый раз и при каких условиях?
Скриншот помогает увидеть проявление. Но адрес, действие и время обычно важнее для поиска записи в журнале.
Где искать причину
Проверку ведут по цепочке: запрос к веб-серверу, выполнение приложения, обращение к базе и внешним сервисам. Важно сопоставить записи за один момент времени, а не просматривать только последнее сообщение в случайном файле.
Журнал запросов Nginx помогает сопоставить адрес, время и HTTP-статус. Его расположение и формат задаются конфигурацией; универсального пути для всех серверов нет. Подробности описаны в документации модуля журналирования Nginx.
Дальше смотрят журнал ошибок веб-сервера, PHP или самого приложения. Если доступна только панель хостинга, нужный раздел или выгрузку можно запросить у его поддержки. Не обязательно сразу получать полный административный доступ к серверу.
Каких действий избегать
Не стоит одновременно менять версию PHP, отключать модули, очищать все кеши и перезапускать сервисы: после этого трудно понять причину и сравнить результат. Каждое изменение должно иметь цель и способ проверки.
Технические подробности ошибки лучше писать в закрытый журнал, а не показывать посетителям. Руководство PHP рекомендует журналирование вместо вывода ошибок на рабочем сайте: настройки отображения и записи ошибок PHP.
Если сбой появился после релиза, рассмотрите возврат предыдущей версии с разработчиком. Перед этим нужно понимать, менялась ли база и появились ли новые заказы: возврат файлов и возврат данных: разные действия.
Что отправить специалисту
Пример обращения
"На сайте example.ru после обновления не оформляется заказ. Ошибка появляется при нажатии “Оплатить”. Последний пример: 4 ноября в 11:20 по Москве. Каталог открывается. Есть доступ к панели хостинга и журналам".
Этого достаточно для начала разговора. Пароли, ключи API и копии базы не нужно публиковать в открытом сообщении: способ передачи доступов согласуется отдельно.
Если нужна помощь с разбором, посмотрите исправление ошибок и доработку сайта. Когда причина связана с окружением после переезда, может понадобиться проверка сервера и переноса.