Ошибка 500

Ошибка 500

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

Код 500 не указывает на конкретную проблему, поэтому для диагностики лучше начинать с логов — это может определить, что именно вызвало сбой. Подробнее о том, как включить логирование ошибок Apache — в статье «Получение логов».

Основные причины ошибки 500:

Проблема с подключением к базе данных

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

Проверьте конфигурационные файлы сайта и убедитесь, что реквизиты базы данных указаны верно. 

Также причиной может быть сбой на сервере баз данных MySQL. Мы отслеживаем такие ситуации и быстро устраняем их — от пользователя действия не требуются.

Ошибка в файле .htaccess

Если в файле .htaccess есть ошибка, Apache не сможет его корректно обработать и вернет ошибку 500.

Пример строки из лога:

example.com [Thu Apr 10 17:10:28 2025] [alert] [pid 99315] config.c(2046): [client 5.24.158.122:0] /home/c/cb73619/test/public_html/.htaccess: command

Здесь проблема в неправильной директиве в файле /home/c/cb73619/test/public_html/.htaccess.

Для диагностики временно переименуйте файл .htaccess и откройте сайт. Если ошибка пропала, значит, проблема в его содержимом.

Можно попробовать точечно закомментировать отдельные строки (добавить символ # в начале строки) и посмотреть, заработает ли сайт, когда конкретные строки отключены.

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

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

Пример записи в логе:

example.com [Thu Apr 10 14:19:03 2025] [error] [pid 1013679] sapi_apache2.c(358): [client 5.24.158.122:0] PHP Fatal error:  Uncaught Error: Class "FFI" not found in /home/c/ct81221/SiteName/public_html/seg.php:4

Из строки видно, что ошибка вызвана отсутствием класса FFI в файле seg.php.

Иногда может быть достаточно поискать в сети текст ошибки из лога — возможно, готовое решение уже есть на форумах или в документации CMS.

Одна из частых причин возникновения ошибки  — неподходящая версия PHP. Проверьте требования CMS или скрипта и смените версию PHP через панель управления.

Если это не помогает, обратитесь к разработчику CMS, плагина или скрипта.

Превышение memory_limit

Ошибка возникает, если скрипт пытается использовать больше памяти, чем доступно по тарифу.

Пример лога:

example.com [Thu Apr 10 11:46:14 2025] [error] [pid 993433] sapi_apache2.c(358): [client 5.24.158.122:0] PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 2516582432 bytes) in /home/c/ct81221/SiteName/public_html/memory.php on line 11

Если скрипту нужно до 2048 МБ памяти, поможет переход на тариф мощного хостинга. Если больше — лучше обратиться к разработчику CMS или расширения, чтобы выяснить, что вызывает такой расход.

Изоляция сайтов

Изоляция сайтов — это мера защиты от заражения, которая помещает каждый сайт в собственное автономное пространство. 

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

Пример лога:

example.com [Thu Apr 10 11:46:15 2025] [error] [pid 2392431] sapi_apache2.c(349): [client 5.24.158.122:0] PHP Fatal error:  Unknown: Failed opening required /home/c/ct81221/SiteName/public_html/index.php' (include_path='.:/opt/php74/share/pear') in Unknown on line 0

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

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