Ошибка 500 Internal Server Error: что значит и как исправить
500 Internal Server Error — сервер столкнулся с непредвиденной проблемой и не смог выполнить запрос. Сам код причину не называет: она записана в журнале ошибок. Это может быть ошибка в коде сайта — PHP-скрипта, плагина, темы, — нехватка памяти или неверная строка в настройках сервера.
Содержание 10
Что означает код 500
По стандарту HTTP код 500 значит: сервер столкнулся с непредвиденной ситуацией, которая помешала ему выполнить запрос. Это самый общий код ошибки сервера: незнакомый клиенту код из группы 5xx по правилам HTTP понимается как 500.
Обычно 500 отвечает программа сайта, а иногда и сам веб-сервер — nginx или Apache, если ошибка в его настройках.
У PHP есть тонкость: фатальная ошибка превращается в ответ 500, только если вывод ошибок на страницу (настройка display_errors) выключен, заголовки ещё не отправлены и код ответа пока 200. Если вывод ошибок включён, текст ошибки попадёт прямо на страницу, а код ответа останется прежним — обычно 200.
Если вы посетитель
- Обновите страницу через минуту-другую: ошибка бывает временной.
- Если ошибка появилась после отправки формы или оплаты, не повторяйте их сразу: сначала проверьте, не прошли ли они, — например, по письму или в личном кабинете.
- Если ошибка не проходит, сообщите владельцу сайта, какую страницу вы открывали и когда.
Как найти причину
Причину ошибки сервер записывает в журнал ошибок. На 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 cycle | nginx зациклился на внутренних перенаправлениях | Проверить 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, а на страницы сайта не попадут.
Если причина в плагине, а в админку не войти, отключите его: переименуйте папку плагина в 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 | Ошибка в программе сайта или в настройках сервера |
| 502 | nginx не получил нормального ответа от PHP или приложения — например, процесс упал |
| 503 | Сервер временно не может ответить: перегрузка или работы |
| 504 | nginx не дождался ответа от PHP или приложения |
Источники
- RFC 9110, раздел 15.6.1 — определение кода 500; раздел 15 — как обрабатывать незнакомые коды.
- Исходный код PHP: main/main.c — когда фатальная ошибка даёт ответ 500; Zend/zend_alloc.c и Zend/zend_execute_API.c — тексты ошибок о памяти и времени.
- Документация PHP: memory_limit и max_execution_time.
- Документация WordPress: отладка и исходный код: страница о критической ошибке.
- Документация Apache: файлы .htaccess.
- Исходный код nginx: ngx_http_core_module.c — цикл внутренних перенаправлений.
- Яндекс Вебмастер: коды ответа HTTP.
Сверено 6 октября 2026 года.
Что почитать дальше
- Ошибка 502 Bad Gateway — когда PHP или приложение не ответили как надо.
- Ошибка 504 Gateway Timeout — когда скрипт работает слишком долго.
- Как установить WordPress — пошагово на хостинге.
- Резервные копии сайта — чтобы после неудачного обновления было что вернуть.
Проверено и обновлено: 07.10.2026