Ошибки

Ошибка 500 Internal Server Error: что значит и как исправить

500 Internal Server Error — сервер столкнулся с непредвиденной проблемой и не смог выполнить запрос. Сам код причину не называет: она записана в журнале ошибок. Это может быть ошибка в коде сайта — PHP-скрипта, плагина, темы, — нехватка памяти или неверная строка в настройках сервера.

Обновлено 07.10.2026≈ 6 мин чтения
Содержание 10

Что означает код 500

По стандарту HTTP код 500 значит: сервер столкнулся с непредвиденной ситуацией, которая помешала ему выполнить запрос. Это самый общий код ошибки сервера: незнакомый клиенту код из группы 5xx по правилам HTTP понимается как 500.

Обычно 500 отвечает программа сайта, а иногда и сам веб-сервер — nginx или Apache, если ошибка в его настройках.

У PHP есть тонкость: фатальная ошибка превращается в ответ 500, только если вывод ошибок на страницу (настройка display_errors) выключен, заголовки ещё не отправлены и код ответа пока 200. Если вывод ошибок включён, текст ошибки попадёт прямо на страницу, а код ответа останется прежним — обычно 200.

Если вы посетитель

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

Как найти причину

Причину ошибки сервер записывает в журнал ошибок. На VPS с nginx последние строки журнала покажет команда:

sudo tail -n 50 /var/log/nginx/error.log

Если журнал ошибок PHP не настроен отдельно, ошибки PHP попадают в журнал nginx в таком виде:

FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/site/wp-content/plugins/plugin/file.php on line 42"

Читайте текст после «PHP Fatal error» и путь к файлу: по пути видно, какой плагин, тема или скрипт сломался.

Что в журналеПричинаЧто сделать
Allowed memory size of … bytes exhaustedСкрипту не хватило памяти: по умолчанию PHP даёт 128 МБ (настройка memory_limit)Поднять memory_limit или найти, что расходует память
Maximum execution time of 30 seconds exceededСкрипт работал дольше лимита max_execution_timeУскорить скрипт или поднять лимит
PHP Parse errorОшибка в самом коде: лишний или пропущенный символВернуть прежнюю версию файла или исправить строку из журнала
rewrite or internal redirection cyclenginx зациклился на внутренних перенаправленияхПроверить root и последний вариант в try_files

Лимит памяти PHP задают в файле /etc/php/8.3/fpm/php.ini:

memory_limit = 256M

После правки перезапустите PHP командой sudo systemctl restart php8.3-fpm. В Ubuntu 26.04 версия PHP другая — 8.5, и в пути к файлу и в названии службы вместо 8.3 будет 8.5. Если память кончается снова и снова, поднятый лимит лишь отложит ошибку: найдите плагин или скрипт, которому её не хватает.

Ошибка 500 в WordPress

С версии 5.2 при фатальной ошибке PHP WordPress показывает свою страницу о критической ошибке — тоже с кодом 500. Чтобы узнать причину, включите журнал отладки. Найдите в файле wp-config.php строку define( 'WP_DEBUG', false ); и замените её этими строками:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Если такой строки нет, добавьте их выше комментария со словами «That's all, stop editing!». Ошибки будут записываться в файл wp-content/debug.log, а на страницы сайта не попадут.

Файл debug.log лежит в папке сайта, и его может открыть кто угодно, если сервер отдаёт такие файлы. Найдя причину, верните WP_DEBUG в false и удалите debug.log.

Если причина в плагине, а в админку не войти, отключите его: переименуйте папку плагина в wp-content/plugins через SFTP или файловый менеджер хостинга.

Ошибки в настройках сервера

Apache и .htaccess. Ошибка в файле .htaccess даёт 500 на страницах папки, где он лежит, и вложенных папок. Чтобы проверить, временно переименуйте файл: если ошибка пропала, дело в нём.

nginx и файл паролей. Если файл с паролями закрытого раздела есть, но nginx не может его прочитать, он отвечает 500 — подробнее в разборе ошибки 401.

nginx и внутренние перенаправления. Если адрес снова и снова перенаправляется внутри сервера — например, последний вариант в try_files ведёт на файл, которого нет, — после нескольких повторов nginx отвечает 500 и пишет в журнал ошибок:

rewrite or internal redirection cycle while internally redirecting to "/index.html"

Проверьте путь в root и последний вариант в try_files.

На обычном хостинге

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

500 и поиск Яндекса

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

Чем 500 отличается от соседних кодов

КодКогда возникает
500Ошибка в программе сайта или в настройках сервера
502nginx не получил нормального ответа от PHP или приложения — например, процесс упал
503Сервер временно не может ответить: перегрузка или работы
504nginx не дождался ответа от PHP или приложения

Источники

Сверено 6 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 07.10.2026