Универсальный ответ на всё непредвиденное
Код 500 — самый общий из ответов о сбое на стороне сервера. Он говорит: при обработке запроса что-то пошло не так, а что именно, сервер сообщить не может или не хочет. Ваш запрос при этом мог быть абсолютно правильным.
Поскольку вся логика ошибки скрыта за общим кодом, конкретную причину видно только в журналах сервера или приложения. Посетитель почти всегда бессилен что-то исправить, но может исключить свои собственные подозрения.
Многие сайты показывают собственную страницу с извинениями вместо стандартного текста. Но код ответа под ней остаётся тем же, а значит, и природа проблемы прежняя: приложение споткнулось, и разбираться нужно с ним.
Что происходит на сервере
Чаще всего причина в ошибке программного кода: необработанное исключение, синтаксическая ошибка после недавнего обновления, несовместимая версия языка или библиотеки. Дальше идёт неправильная конфигурация веб-сервера, например ошибка в файле правил, и проблемы с правами на файлы.
Затем ресурсы: не хватает памяти, лимиты процессов, недоступна база данных, закончилось место на диске. Наконец, вмешательство сторонних расширений или плагинов, которые конфликтуют друг с другом после обновления.
Кроме того, ошибки 500 нередко возникают из-за неправильного формата входных данных: приложение не проверило значение из формы и споткнулось на нём. Тогда сбой появляется лишь при определённых действиях, а остальные страницы сайта работают без проблем.
Что может проверить посетитель
Обновите страницу через минуту: кратковременные сбои иногда проходят сами. Откройте сайт с другого устройства и убедитесь, что проблема не только у вас. Другие страницы того же сайта тоже могут отвечать нормально, тогда сломан лишь конкретный обработчик.
Если вы отправляли форму, не повторяйте отправку многократно: это может продублировать заказ или сообщение. Проверьте, не создалась ли запись, прежде чем пробовать снова. Если ошибка держится долго, сообщите в поддержку с указанием адреса и времени.
Разбор для владельца сайта
Начните с журнала ошибок веб-сервера и журнала приложения: в них обычно есть строка с точной причиной. Спросите себя, что менялось перед сбоем: обновление, новый плагин, правка конфигурации, перенос на другой сервер. Откатите последнее изменение и проверьте результат.
Проверьте права на файлы и папки, свободное место на диске, доступность базы данных, версию языка программирования. Временно отключите плагины и вернитесь к стандартной теме или шаблону, чтобы найти конфликт.
Если у вас нет доступа к серверу, а вы владелец сайта на хостинге, обратитесь в поддержку провайдера и приложите время ошибки и адрес страницы: по ним специалисты найдут запись в журнале и подскажут точную причину.
Отличие от 502, 503 и 504
Код 500 означает сбой самого приложения при обработке запроса. 502 и 504 обычно относятся к промежуточному шлюзу, который не получил правильный или своевременный ответ от следующего сервера. 503 сообщает о недоступности сервиса, например из-за перегрузки или обслуживания. Эти различия помогают быстрее определить, где искать проблему: в коде, в связке серверов или в нагрузке.
Чтобы быстрее локализовать сбой, полезно настроить единый идентификатор запроса, который попадает в журналы всех звеньев. Тогда по одному номеру можно проследить путь запроса и увидеть, на каком шаге произошла ошибка.
Профилактика
Проверяйте обновления на тестовой копии, ведите резервные копии, отслеживайте свободное место и память, настройте оповещения о всплесках ошибок. Показывайте посетителям понятную страницу с информацией о том, что сбой зафиксирован. Это снижает число повторных обращений и жалоб.
Если сайт работает на популярной системе управления, сначала проверьте официальные рекомендации по решению ошибок 500: типичные причины давно описаны, и часто помогает простое действие вроде пересоздания файла правил или увеличения лимита памяти для скриптов.