Ошибка 500 Internal Server Error: что значит и как исправить на своём сайте
Коротко
Ошибка 500 (Internal Server Error) значит, что сайт сломался при обработке запроса, а не что у посетителя плохой интернет. Владельцу сайта первым делом нужно открыть лог ошибок: там написаны точная причина, файл и строка. Чаще всего ошибку 500 вызывают опечатка в .htaccess, фатальная ошибка PHP после обновления, нехватка памяти и неправильные права на файлы.
Содержание
Что означает ошибка 500 на сайте
Код 500 Internal Server Error - "внутренняя ошибка сервера". Сервер получил запрос, начал его обрабатывать и сломался, но не может сказать посетителю, что именно пошло не так. Это не проблема интернета или браузера: ошибка возникает на стороне сайта. Поэтому браузер показывает лишь общий текст вроде "HTTP ERROR 500", "Произошла ошибка, код 500" или "Ошибка сервера, код состояния 500", а настоящая причина записана в логах сервера.

Если вы посетитель (ошибка 500 на сайте госуслуг, банка, СФР, электронного дневника), исправить её со своей стороны нельзя. Обновите страницу через минуту клавишей F5, попробуйте открыть сайт в режиме инкогнито или с другого устройства. Если ошибка держится долго - сайт сломан или перегружен, остаётся подождать или написать в поддержку сервиса.
Если вы владелец сайта, дальше пошаговая диагностика: от самой частой причины к редким.
| Причина | Как понять | Как исправить |
|---|---|---|
Ошибка в .htaccess | В логе Apache "Invalid command" или "RewriteRule: bad flag" | Переименовать файл, исправить строку |
| Фатальная ошибка PHP | В логе PHP "PHP Fatal error" | Исправить код или откатить обновление |
| Не хватает памяти | "Allowed memory size ... exhausted" | Поднять memory_limit, найти утечку |
| Неверные права на файлы | "Permission denied", "is writable by group" | Каталоги 755, файлы 644 |
| Несовместимая версия PHP | "Call to undefined function", ошибки после смены версии | Вернуть прежнюю версию, обновить CMS и плагины |
| Сломанный плагин или модуль CMS | Ошибка появилась после установки или обновления | Отключить плагин, переименовав его папку |
Чем 500 отличается от 502, 503 и 504
Коды 5xx похожи, но причины у них разные, и путать их - значит искать проблему не там.
| Код | Что произошло | Где искать |
|---|---|---|
| 500 Internal Server Error | Сайт упал при обработке запроса | Логи PHP и веб-сервера, код, .htaccess |
| 502 Bad Gateway | Nginx не получил ответа от PHP-FPM или бэкенда | Запущен ли PHP-FPM, лог Nginx |
| 503 Service Unavailable | Сервер перегружен или в режиме обслуживания | Нагрузка, лимиты хостинга, режим обслуживания CMS |
| 504 Gateway Timeout | Скрипт работает дольше, чем ждёт прокси | Медленные запросы к базе, внешние API |
Сообщение 500 Internal Server Error nginx внизу страницы значит, что ответ отдал Nginx: чаще всего PHP-FPM вернул ошибку или в конфиге Nginx есть цикл перенаправлений внутри сервера. Смотрите лог Nginx и лог PHP-FPM.
Шаг 1. Найдите причину в логах
Лог ошибок - самый быстрый способ узнать, почему сайт отдаёт 500. Гадать без него можно часами. Где лежат логи:
- Виртуальный хостинг - в панели управления раздел "Логи" или "Журналы", либо папка
logsрядом с папкой сайта. Нужен файлerror.logилиerror_log. - VPS с Apache -
/var/log/apache2/error.log(Ubuntu, Debian) или/var/log/httpd/error_log(CentOS, AlmaLinux). - VPS с Nginx и PHP-FPM -
/var/log/nginx/error.logи/var/log/php8.4-fpm.log(номер версии ваш). - Локальный сервер - в XAMPP
C:\xampp\apache\logs\error.log, в Open Server - папкаlogsпанели.
Откройте страницу с ошибкой ещё раз и сразу посмотрите последние строки лога:
# Последние 30 строк лога Apache
sudo tail -n 30 /var/log/apache2/error.log
# Следить за логом в реальном времени, пока обновляете страницу
sudo tail -f /var/log/nginx/error.log
# Найти фатальные ошибки PHP за сегодня
sudo grep "PHP Fatal" /var/log/php8.4-fpm.log | tail -n 20

В строке лога есть всё нужное: тип ошибки, текст, файл и номер строки. Например, PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/www/site/db.php:12 сразу говорит, что старый код использует удалённые в PHP 7 функции, а /var/www/site/.htaccess: Invalid command 'php_value' - что в .htaccess есть директива, которую сервер не поддерживает.
Ошибка 500 на сервере с Nginx
Nginx не читает .htaccess, поэтому на таких серверах причина обычно в конфиге сайта или в PHP-FPM. Сообщение rewrite or internal redirection cycle while internally redirecting to "/index.php" в логе Nginx означает, что директива try_files ссылается на файл, которого нет, и запрос ходит по кругу. Проверьте путь в root и наличие index.php. После любой правки конфига проверяйте синтаксис и только потом перезагружайте сервер:
sudo nginx -t && sudo systemctl reload nginx
# Состояние PHP-FPM (номер версии ваш)
systemctl status php8.4-fpm --no-pager
Если доступа к логам нет
Временно включите запись ошибок в свой файл. Добавьте в начало index.php:
<?php
// Временно: пишем все ошибки в файл рядом с сайтом
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', __DIR__ . '/php-errors.log');
error_reporting(E_ALL);
Ошибки появятся в php-errors.log, а посетители их не увидят. Показывать ошибки прямо на странице (display_errors = 1) можно только на тестовой копии сайта: в тексте ошибки видны пути к файлам и куски кода. Все способы включить отображение ошибок собраны в статье как включить вывод ошибок PHP.
После исправления удалите эти строки и файл php-errors.log: он доступен из браузера, и в нём может оказаться служебная информация.
Шаг 2. Проверьте .htaccess
Одна опечатка в .htaccess - и весь сайт отдаёт 500, причём на всех страницах сразу, включая картинки. Это первое, что стоит проверить, если ошибка появилась после правки редиректов или установки плагина.
- Подключитесь к сайту по FTP/SFTP или откройте файловый менеджер хостинга.
- Включите показ скрытых файлов: имя
.htaccessначинается с точки. - Переименуйте
.htaccessв.htaccess_off. - Обновите сайт. Если главная открылась - причина в файле.
- Верните имя и комментируйте подозрительные строки знаком
#по одной, пока не найдёте виновную.

Типичные виновники:
php_valueиphp_flag- работают только при PHP в виде модуля Apache. На хостинге с PHP-FPM или CGI они вызывают 500. Перенесите настройки вphp.iniили.user.ini.- Директивы модулей, которые не подключены:
Headerбезmod_headers,ExpiresActiveбезmod_expires. Оберните их в<IfModule mod_headers.c>. - Опечатки во флагах:
[R=301,L]пишется без пробелов. - Бесконечная внутренняя переадресация - в логе "Request exceeded the limit of 10 internal redirects".
Правильный синтаксис редиректов, ЧПУ и кеширования разобран в статье файл .htaccess: редиректы и настройки.
Шаг 3. Ошибки PHP и смена версии
Фатальная ошибка PHP при выключенном выводе ошибок превращается в пустую страницу или код 500. Частые случаи:
- Синтаксическая ошибка после правки -
PHP Parse error: syntax error, unexpected .... Проверьте файл командойphp -l файл.php. - Смена версии PHP на хостинге - старая CMS или плагин используют функции, удалённые в PHP 8:
each(),create_function(),mysql_*. Верните прежнюю версию в панели хостинга, затем обновите движок и расширения. - Нет расширения -
Call to undefined function mb_strlen()илиClass "PDO" not found. Включитеmbstring,pdo_mysql,intlв настройках PHP. - Ошибка подключения к базе без обработки исключения - в логе
SQLSTATE[HY000] [1045] Access denied. Проверьте логин, пароль и хост базы в конфиге.
# Проверить синтаксис всех PHP-файлов проекта
find /var/www/site -name "*.php" -exec php -l {} \; | grep -v "No syntax errors"
# Какая версия PHP работает в консоли
php -v
Учтите, что версия PHP в консоли и у сайта на хостинге может отличаться. Как узнать именно ту, что обрабатывает страницы, - в статье как узнать версию PHP.
Не хватает памяти или времени
Сообщение Allowed memory size of 134217728 bytes exhausted означает, что скрипт упёрся в memory_limit (здесь 128 МБ). Поднимите лимит в php.ini или .user.ini в корне сайта:
; .user.ini - для хостинга с PHP-FPM
memory_limit = 256M
max_execution_time = 120
Изменения .user.ini подхватываются не сразу, а через несколько минут (параметр user_ini.cache_ttl). Если памяти не хватает даже с 512 МБ, увеличивать лимит дальше бессмысленно - ищите тяжёлый код: выборку всей таблицы в массив, генерацию огромного файла целиком, бесконечную рекурсию. Где искать главный конфиг, описано в статье php.ini: где находится.
Шаг 4. Права на файлы и владелец
Многие хостинги запускают PHP от имени пользователя аккаунта и отказываются выполнять файлы с опасными правами. Если на скрипт или папку стоит 777 или запись разрешена группе, сервер вернёт 500, а в логе будет что-то вроде "is writable by others" или "Permission denied".
| Объект | Права | Пример |
|---|---|---|
| Каталоги | 755 | public_html, wp-content |
| Обычные файлы | 644 | index.php, .htaccess |
| Файлы с паролями | 600 или 640 | wp-config.php, .env |
Исправить права на VPS для папки, куда вы только что залили сайт:
cd /var/www/site
# Каталоги - 755, файлы - 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 .env
Не ставьте 777 "чтобы точно заработало": это не лечит 500, а открывает сайт для заражения. Если файлы залиты от root, поменяйте владельца на пользователя сайта, а не права на всех.
Ошибка 500 в WordPress и Laravel
WordPress
- Включите журнал отладки: в
wp-config.phpзадайтеdefine('WP_DEBUG', true);,define('WP_DEBUG_LOG', true);иdefine('WP_DEBUG_DISPLAY', false);. - Откройте сайт и посмотрите файл
wp-content/debug.log: в нём будет путь к сломанному плагину или теме. - Если в админку не попасть, переименуйте папку
wp-content/pluginsвplugins_off- все плагины отключатся. - Верните имя папки и включайте плагины по одному, пока ошибка не вернётся.
- Если виновата тема, переименуйте её папку в
wp-content/themes- WordPress переключится на стандартную.
Laravel
В Laravel 12 и 13 подробности ошибки пишутся в storage/logs/laravel.log. Частые причины 500 после выкладки: нет файла .env или ключа APP_KEY, у веб-сервера нет прав на запись в storage и bootstrap/cache, устаревший кеш конфигурации.
tail -n 50 storage/logs/laravel.log
# Сгенерировать ключ, если APP_KEY пустой
php artisan key:generate
# Сбросить кеши после выкладки
php artisan optimize:clear
# Права на запись для пользователя веб-сервера
sudo chown -R www-data:www-data storage bootstrap/cache
Не включайте APP_DEBUG=true на рабочем сайте: страница ошибки покажет переменные окружения, включая пароли от базы.

Как не допустить ошибку 500 снова
- Проверяйте обновления CMS, плагинов и версии PHP сначала на копии сайта - локально в XAMPP или на тестовом поддомене.
- Перед правкой
.htaccessи конфигов сохраняйте копию файла, чтобы откатиться за секунду. - Держите
display_errorsвыключенным, аlog_errors- включённым: ошибки будут в логе, а не на экране посетителей. - Настройте уведомления о недоступности сайта (мониторинг, Яндекс Вебмастер), чтобы узнавать о 500 раньше посетителей.
- Сделайте свою страницу ошибки: в Apache директива
ErrorDocument 500 /500.htmlпокажет понятное сообщение вместо стандартного.
Короткая ошибка 500, которая пропала через минуту, почти не влияет на позиции в поиске. Но если робот Яндекса несколько дней подряд получает код 500, страницы начнут выпадать из индекса, поэтому чинить сайт стоит сразу.
Частые вопросы
Что означает ошибка 500 на сайте?
Это внутренняя ошибка сервера: сайт получил запрос, но упал при его обработке. Причина на стороне сайта - в коде, настройках или сервере, а не у посетителя.
Что делать посетителю, если сайт выдаёт ошибку 500?
Обновить страницу через минуту, открыть её в режиме инкогнито или с другого устройства. Если не помогает, сайт сломан - нужно ждать, пока его починят, или написать в поддержку.
Чем ошибка 500 отличается от 502 и 503?
500 - сбой при выполнении кода сайта. 502 - прокси (обычно Nginx) не получил ответа от PHP-FPM, 503 - сервер перегружен или закрыт на обслуживание.
Может ли .htaccess вызвать ошибку 500?
Да, это одна из самых частых причин. Неподдерживаемая директива вроде php_value или опечатка во флагах ломает весь сайт. Переименуйте файл и проверьте, открылся ли сайт.
Как исправить ошибку 500 из-за нехватки памяти?
Увеличьте memory_limit в php.ini или .user.ini, например до 256M. Если не хватает и 512M, ищите тяжёлый код: выборку всей таблицы, большой экспорт или рекурсию.
Влияет ли ошибка 500 на поисковую выдачу?
Кратковременная - почти нет. Если робот несколько дней получает код 500, страницы начинают выпадать из индекса, поэтому чинить сайт нужно сразу.



