Что такое ошибки 500, 502, 503, 504 и как их исправить

 “Пятисотые” коды состояния обозначают проблемы на стороне сервера. В этой статье мы рассмотрим, что означают ошибки 500, 502, 503 и 504 и как их устранить.

Что такое внутренняя ошибка сервера 500

Ошибка HTTP 500 (“Внутренняя ошибка сервера”) является одной из стандартных статусных ошибок HTTP. Она указывает на то, что сервер столкнулся с непредвиденной ситуацией, из-за которой не удалось обработать запрос, представленный клиентом.

Причины возникновения 500 ошибки

  • Ошибки в скриптах сайта.
  • Неверный синтаксис файла .htaccess – это файл, в котором можно задавать настройки для работы с веб-сервером Apache и вносить изменения в работу сайта (управлять различными перенаправлениями, правами доступа к файлам и опциями PHP, задавать собственные страницы ошибок и т. д.).
    Узнать больше о файле .htaccess можно в нашей статье.
  • Неподходящая версия PHP.
  • Несовместимые или устаревшие плагины.
  • Нехватка оперативной памяти при выполнении скрипта.

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

Как исправить ошибку 500 

Рассмотрим различные варианты решения ошибки 500 (Internal Server Error). Если у вас возникнут сложности в самостоятельном решении проблемы или вы не уверены в своих силах, вы можете обратиться в нашу техподдержку, мы постараемся помочь.

Неверный синтаксис файла .htaccess

Некорректные правила в файле .htaccess – частая причина возникновения ошибки. Чтобы это проверить, найдите .htaccess в файлах сайта и переименуйте его (например, в “test”). Так директивы, прописанные в файле, не повлияют на работу сервера. Если сайт заработал, переименуйте файл обратно в .htaccess и найдите ошибку в директивах. Если вы самостоятельно вносили изменения в .htaccess, закомментируйте новые строки и проверьте доступность сайта. Также может помочь замена текущего файла .htaccess на стандартный в зависимости от CMS.

Неподходящая версия PHP

Устаревшие версии PHP не получают обновления безопасности, могут работать медленнее и могут вызывать проблемы с плагинами и скриптами. Возможно, для работы вашего веб-ресурса нужна более новая версия PHP. Попробуйте сменить версию PHP на другую в разделе “Сайты”. Также вам может помочь наша статья с описанием раздела “Сайты”.

Несовместимые или устаревшие плагины

Плагины для CMS сайта могут конфликтовать при работе друг с другом. Устаревшие версии также могут вызывать 500 ошибку сервера, т. к. могут быть несовместимы с актуальными версиями CMS или PHP.

Для начала проверьте обновления для плагинов в административной панели CMS и при наличии обновлений обновите их. Если перед появлением кода состояния HTTP 500 вы устанавливали новые плагины, то отключите их.

Если после обновления или отключения новых плагинов 500 ошибка сохраняется, то попробуйте отключить все плагины на сайте, это позволит понять, вызвана ли проблема плагинами. Отсутствие 500 ошибки после отключения всех плагинов говорит о том, что проблему вызывает один из них, поэтому просто включайте плагины по одному и проверяйте работу сайта, пока после включения плагина снова не появится 500 ошибка – это и будет означать, что вы нашли проблемный плагин.

Если же из-за ошибки вы не можете попасть в панель администратора WordPress, то:

  1. Перейдите в раздел “Сайты” в панели управления.
  2. Нажмите на кнопку “Перейти к файлам сайта” напротив нужного сайта.
  3. В открывшемся файловом менеджере перейдите в директорию public_html, а в ней перейдите в директорию wp-content.
  4. Отключите все плагины, переименовав директорию plugins. Сделать это вы можете, нажав правой кнопкой мыши на директорию и выбрав пункт “Переименовать” в меню.
  5. Проверьте работу сайта. Если он заработал, то один из плагинов нарушает работу сайта.
  6. Переименуйте директорию обратно в plugins и перейдите в нее.
  7. По очереди переименовывайте папки плагинов и проверяйте работу сайта. Переименование папки плагина отключает его. Если сайт заработает, значит, вы нашли проблемный плагин и можете обновить его или заменить в панели администратора WordPress.

Нехватка оперативной памяти

Некоторые плагины, CMS, а также “самописные” скрипты могут требовать больше оперативной памяти, чем выделено по умолчанию. Чтобы определить, что ошибка вызвана именно нехваткой оперативной памяти, нужно включить логирование ошибок PHP. Для этого добавьте в начало файла .htaccess (по пути название_сайта/public_html/.htaccess) сайта следующие строки:

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/первая_буква_логина_аккаунта/логин_аккаунта/название_сайта/public_html/PHP_errors.log
php_value error_reporting 2047
php_value log_errors_max_len 0

После добавления строк обновите страницу сайта с 500 ошибкой и проверьте содержимое файла PHP_errors.log (по пути название_сайта/public_html/PHP_errors.log). Если в этом файле вы видите ошибку Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes)..., то это значит, что сайту не хватает оперативной памяти.

Вы можете увеличить количество памяти для сайта в файле .htaccess (по пути название_сайта/public_html/.htaccess), добавив в начало файла строку вида:

php_value memory_limit xxxM

Где xxx нужно заменить на число мегабайт, которое необходимо для работы сайта. Например: php_value memory_limit 512M

Обратите внимание!
Если вы используете CMS WordPress, то для того чтобы увеличить лимит памяти, нужно в дополнение к корректировкам в файле .htaccess добавить в начало файла wp-config.php строку вида:
define('WP_MEMORY_LIMIT', 'xxxM')
Где xxx нужно заменить на число мегабайт, которое вы указали в файле .htaccess.
Например: define('WP_MEMORY_LIMIT', '512M')

Ошибки в скриптах сайта

Самая сложная из описанных проблем. 500 ошибку могут вызывать ошибки в коде скриптов сайта. Для того чтобы точно определить проблему, нужно включить логирование ошибок PHP. Для этого добавьте в начало файла .htaccess (по пути название_сайта/public_html/.htaccess) сайта следующие строки:

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/первая_буква_логина_аккаунта/логин_аккаунта/название_сайта/public_html/PHP_errors.log
php_value error_reporting 2047
php_value log_errors_max_len 0

После добавления строк обновите страницу сайта с 500 ошибкой и проверьте содержимое файла PHP_errors.log (по пути название_сайта/public_html/PHP_errors.log). В этот файл запишутся ошибки PHP, которые возникают при работе сайта.

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

Обратите внимание!
Вы также можете обратиться в нашу техподдержку, но учитывайте, что исправление ошибок в скриптах не входит в обязанности технической поддержки. Мы постараемся помочь с решением проблемы, но не гарантируем какого-либо результата и время решения может быть больше обычного.

Что такое ошибка 502

Ошибка 502 (“Ошибка шлюза”) является стандартной статусной ошибкой HTTP, которая указывает на проблемы в коммуникации между серверами. 502 Bad Gateway – это ошибка, которая возникает, когда прокси-сервер (обычно используется для промежуточной обработки запросов клиента и сервера) получает недопустимый ответ от сервера, к которому он делает запрос.

Причины возникновения 502 ошибки

На нашем виртуальном хостинге используется связка из двух веб-серверов Nginx и Apache. Nginx получает все запросы от клиентов и обрабатывает статический контент (например, картинки). Когда запрос приходит к динамическому контенту (например, php-скрипту), Nginx передает запрос на Apache, который обрабатывает запрос, отдает ответ Nginx, а уже Nginx отдает ответ клиенту.

Код состояния HTTP 502 возникает тогда, когда Nginx получает некорректный ответ от Apache. Чаще всего причиной являются проблемы в работе php-скриптов, которые весьма затруднительно “отловить”.

Также ошибка 502 Bad Gateway может возникать из-за проблем на стороне хостинга.

Как исправить ошибку 502

Так как конкретная причина возникновения 502 ошибки в каждом случае уникальна, а диагностика ошибки требует опыта и сложнее, чем, например, диагностика 500 ошибки, мы рекомендуем обратиться в техподдержку.

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

Что такое ошибка 503

Ошибка 503 – это код состояния HTTP, который указывает, что сервер временно недоступен или не может обработать запрос из-за перегрузки или технических проблем.

Причины возникновения 503 ошибки

Самая частая причина возникновения кода состояния HTTP 503 – ограничение максимального количества одновременно обрабатываемых запросов. Если обрабатывается максимальное количество запросов, то все новые запросы будут получать 503 код ответа.

Как исправить ошибку 503 

Для обычных и VIP-тарифов виртуального хостинга максимальное количество одновременно обрабатываемых запросов ограничено 30 запросами. Для Битрикс-тарифов виртуального хостинга ограничение составляет 60 одновременных запросов.

Чтобы проверить текущее количество процессов, которые обрабатывают запросы, подключитесь по SSH. Выполните команду:

ps aux | grep apache | wc -l

Завершить текущие процессы можно командой:

pkill apache24

Чтобы решить проблему, необходимо определить ее источник – это может быть DDoS-атака, долгая работа скриптов сайта или обработка запросов к БД и ряд других причин. Для определения причины рекомендуем обратиться в техническую поддержку. Коллеги помогут определить причину и предложат варианты решения проблемы.

Что такое ошибка 504

Ошибка HTTP 504 – это код состояния HTTP, который указывает на то, что сервер, действуя в качестве шлюза или прокси-сервера, не получает ответ от внешнего сервера в установленный для запроса временной интервал. 

Причины возникновения 504 ошибки

Так же как и в случае с 502 ошибкой, проблема возникает во время работы связки двух веб-серверов Nginx и Apache. При обработке запроса Nginx ждет ограниченное время ответа от Apache и если не получает его, возвращает клиенту ошибку 504 (Gateway Timeout).

Apache может долго обрабатывать запрос из-за сложности скрипта, к которому происходит обращение, долгого ответа сторонних сервисов, к которым обращается скрипт, больших запросов в БД или проблем на хостинговом сервере.

Как исправить ошибку 504

Во всех случаях необходимо обратиться в техническую поддержку. Коллеги помогут диагностировать проблему и предложат варианты решения, например, увеличив время ожидания ответа от Apache на Nginx.

Итак, мы рассмотрели, как определить и исправить ошибки 500, 502, 503, 504. Если у вас возникнут сложности, вы можете обратиться в техническую поддержку, а если вы захотите обсудить эту статью или наш хостинг с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.

5
825