Иногда бывает так: открываешь сайт и вместо ожидаемого контента видишь грозную надпись: 500 Internal Server Error. Когда возникает эта ошибка, пользоваться сайтом невозможно: ни одна страница не загружается. А дальше — как повезет: иногда ошибка пропадает за минуту, а порой может задержаться на часы или даже дни.
Разберемся, что значит «ошибка 500», какие неполадки могут за ней скрываться и как точнее определить причину сбоя, будь вы пользователь или вебмастер. А вот исправить неполадку может только владелец сайта.
О чем говорит код ошибки 500
Когда пользователь обращается к ресурсу, сервер его интернет-провайдера связывается с серверами сайта и обменивается с ними запросами по протоколу HTTP. Одна из частей любого запроса по этому протоколу — код состояния, число, которое описывает, насколько успешно прошел запрос. Скажем, код 200 означает, что все хорошо. А код 403 — что к данным нет доступа.
Код ответа 500 — тоже одно из «сообщений», которые передает протокол HTTP. Число сопровождается короткой фразой: Internal Server Error. Вот что такое ошибка 500 — ответ от протокола, что сайт невозможно загрузить.
В переводе на русский Internal Server Error означает «внутренняя ошибка сервера». Код 500 указывает, что сайт недоступен из-за сбоя, причина которого не подпадает под критерии других ошибок. То есть неполадку нельзя описать каким-то из других кодов HTTP.
Из-за чего может возникнуть внутренняя ошибка сервера
Сразу поясним: пользователь не имеет к этому никакого отношения. Все ошибки, коды которых начинаются с цифры 5, говорят о неполадках на стороне владельца сайта. Именно он имеет доступ к серверу и способен исправить сбой.
Ошибка 500 означает, что на сервере что-то не так и он не может обработать запрос пользователя. Но что именно сломалось — протокол сказать не может. То есть причины сбоя могут быть разными и однозначный ответ, что случилось, дать нельзя. Но вот несколько самых частых ситуаций, в которых HTTP возвращает этот код состояния.
Технические работы. Самый простой вариант — владелец сайта временно закрыл его на техобслуживание и сервер попросту не работает. Конечно, в этом случае логичнее повесить на страницу плашку о проведении работ. Но если сайт небольшой и принадлежит обычному человеку, а не компании, он может этого и не сделать. А значит, пользователи столкнутся с ошибкой сервера 500.
Проблемы на сервере. Сбой может быть чисто аппаратным — например, сервер отключился из-за физических неполадок. Но проблема может быть и на стороне программного обеспечения. Среди частых причин 500-й ошибки сервера можно выделить:
- устаревшее или неверно настроенное программное обеспечение на сервере;
- конфликтующие друг с другом плагины CMS — системы управления сайтом;
- ошибки в скриптах — сценариях, которые выполняются на сервере;
- слишком «тяжелый» код сайта, который отнимает слишком много ресурсов;
- слишком большое количество процессов — некоторые хостинги сайтов устанавливают на него ограничение;
- устаревшая версия языка PHP — частая причина ошибки 500 в nginx, популярном бесплатном HTTP-сервере;
- некорректно выданные доступы к файлам и папкам;
- проблемы с базой данных.
А иногда причиной становится излишняя нагрузка на сервер. Скажем, иногда сообщение об internal error появляется на короткий срок и исчезает после перезагрузки страницы. Это значит, что в конкретный момент сервер не смог обработать запрос — вполне вероятно, из-за большой нагрузки.
Неполадки с соединением. Речь идет не о пользователе — у сайта тоже может сбоить соединение с интернетом. Скажем, если провайдер проводит работы или где-то на линии произошла авария. В этом случае подключение сайта к интернету становится медленным и нестабильным, может пропасть доступ к DNS-серверу — а у пользователя высветится error code 500. Впрочем, подобные сбои происходят относительно редко.
Проблемы в файлах сайта. Одна из самых частых причин внутренней ошибки сервера 500 — неправильный синтаксис в файле .htaccess. Этот файл есть во всех инфраструктурах под управлением веб-сервера Apache и содержит настройки для серверного ПО. С его помощью администратор сайта задает доступы, управляет перенаправлениями с одних страниц на другие и выполняет множество других действий. Но если допустить в этом файле опечатку, сервер не сможет корректно прочесть настройки и выдаст server error 500.
Другие причины. Технически внутренняя ошибка 500 может произойти и по причинам, которые обычно описываются другими кодами состояния. Среди таких причин — отсутствие прав на просмотр страницы, превышенное время ожидания ответа и другие. Для них есть свои коды, но иногда настройки серверного ПО не позволяют HTTP-серверу узнать, что именно произошло. Поэтому он выдает универсальный ответ 500, вместо того чтобы сообщить о настоящей причине сбоя.
Чем ошибка 500 грозит сайту
Часто статус 500 держится всего несколько секунд и вскоре пользователи снова получают доступ к сайту. В этом случае ничего страшного обычно не происходит. Но если ошибка задержится на более долгий срок, у владельцев сайта могут возникнуть проблемы. Вот какие.
Недоступность для пользователей. Когда пользователь сталкивается с внутренней ошибкой сервера — он не может серфить сайт как обычно. Вместо интересующей страницы у него отображается сообщение вида «an internal server error occurred». Если оно не пропадает через несколько секунд или минут, пользователь делает вывод, что получить доступ к сайту в ближайшее время не выйдет, и уходит. Владелец сайта теряет трафик, а если ошибка повторяется часто, посетители рано или поздно запомнят это и могут перестать заходить на сайт.
Ухудшение SEO-показателей. Поисковые роботы регулярно сканируют сайты, чтобы усовершенствовать поисковую выдачу — показать пользователю релевантные страницы. Если же сайт недоступен, а в это время на него зашел робот, он не сможет получить доступ к контенту. Чаще всего роботы снова проверяют доступность сайта через какое-то время. Но если во второй раз подряд столкнутся с 500 HTTP Error — удалят сайт из поисковой выдачи. Люди не смогут находить его в поиске даже какое-то время после того, как владелец сайта исправит ситуацию.
Потеря денег. Если сайт коммерческий, то любая потеря трафика для него приводит к упущенной выгоде. Например, пользователь мог купить товар в интернет-магазине, но из-за недоступности сайта не сделал этого. Или, если речь о развлекательном ресурсе, — не смог посмотреть рекламу, за показы которой владелец сайта получает деньги.
Как продиагностировать внутреннюю ошибку сервера
Обычный пользователь не имеет доступа к серверным файлам и не сможет обнаружить причину ошибки. А вот администратор или веб-разработчик, отвечающий за состояние сайта, вполне способен ее продиагностировать. Для этого он может:
- посмотреть логи ошибок. Серверное ПО логирует, то есть записывает сведения обо всех событиях, в том числе об ошибках. Логи можно просмотреть в панели управления хостингом сайта или напрямую подключиться к серверу. Записи могут показать, когда появилась ошибка и после какого действия возникла;
- проверить файл .htaccess. Ошибки и опечатки в этом файле — очень частая причина сбоя, при этом заметить их довольно сложно. Лучше отдельно проверить файл, посмотреть, когда в него вносили изменения, и при необходимости откатить до прошлой версии. А еще существуют специальные сервисы для проверки, корректен ли этот файл;
- воспользоваться специализированными инструментами. Иногда утилиты для анализа логов и поиска ошибок есть в CMS, системах управления контентом сайта. Но даже если их нет — можно отдельно установить подобное ПО. А иногда достаточно просмотреть информацию в панели разработчика в браузере.
Кроме того, можно проверить, какая версия PHP установлена на сервере и не обновлялось ли в последнее время какое-то ПО. Может быть, на сервер недавно внедрили новый модуль, который конфликтует с уже имеющимися. А может, кто-то по ошибке изменил права доступа к файлам, и теперь программное обеспечение не может их прочитать.
Как исправить ошибку 500
Если вы пользователь, сделать, скорее всего, ничего не получится: проблема на стороне сайта. Впрочем, можно какое-то время подождать, перезагрузить страницу, очистить кэш браузера и cookies. А если ошибка никуда не денется — связаться с администраторами сайта. Часто их контакты оставляют прямо в окне ошибки, например в виде ссылки.
Совсем иначе обстоят дела, если вы администратор. Первым делом предстоит выяснить причину ошибки: проверить логи, доступы, модули и файлы сервера. И уже после обнаружения причины исправлять ситуацию. Как это сделать — зависит от того, что именно произошло на сервере.
- Если причиной стала ошибка в .htaccess — можно откатить файл до старой, работающей версии, или вручную поправить неверный синтаксис. То же самое касается некорректных записей в других файлах и скриптах.
- Если ошибка возникла из-за конфликтующих модулей или устаревшего ПО — нужно устранить конфликты, например удалить часть программного обеспечения или заменить на аналоги. PHP стоит обновить до совместимой версии.
- Если сайт исчерпал лимит на количество одновременно работающих процессов — администратор может вручную остановить какие-то из них. Да, это означает, что часть функциональности сайта временно перестанет работать. Но это лучше, чем полная потеря доступа.
- Если же причина — слишком высокая нагрузка на сервер, пути решения могут быть разными. Например, подключить больше мощностей, если всплеск нагрузки штатный — скажем, в интернет-магазине идет распродажа и туда заходит много пользователей. Или внедрить блокировщик DDoS-атак, если есть подозрение, что нагрузка так выросла из-за действий злоумышленников.
Можно также поменять серверные настройки: посмотреть разные варианты конфигураций и проверить, с какими из них сайт работает лучше. Но так стоит делать, только если вы уверены, что проблема не в опечатках в файлах и не в конфликте модулей. А в крайнем случае администратор может даже переустановить CMS. Но на это стоит идти, только если больше ничего не помогло.
Основные выводы
- 500 Error — это ошибка, при появлении которой сайт недоступен для пользователя. Число 500 — код состояния в протоколе HTTP. С помощью чисел протокол показывает, что именно пошло не так.
- Ошибка сервера с кодом состояния 500 возникает, когда на сайте какие-то неполадки. Какие именно — веб-сервер сказать не может. Причиной может быть аппаратный сбой, неверно настроенное серверное ПО или ошибки в файлах сайта.
- Если вы пользователь и столкнулись с внутренней ошибкой 500 — просто подождите и перезагрузите страницу. Если же проблема не исчезнет, свяжитесь с администраторами сайта. Исправить ошибку могут только они.
- Администратор сайта может проверить разные участки инфраструктуры: файлы, базу данных, настройки сервера и установленные модули. Что именно делать с ошибкой — зависит от причины, которую он обнаружит. Иногда достаточно исправить опечатку, а порой приходится и переустанавливать серверное ПО.