Ошибка 500

Ошибка 500

500 ошибка (Internal Server Error)  — это внутренняя ошибка сервера, которая может быть вызвана самыми разными причинами. Она не указывает напрямую на причину ошибки, поэтому для диагностики может потребоваться включение логирования ошибок Apache. Как это сделать — описано в инструкции по включению логов.

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

  • Проблема с подключением к базе данных
  • Ошибка в файле .htaccess
  • Ошибка в скрипте сайта
  • Превышение лимита памяти (memory_limit)
  • Ограничения изоляции сайтов

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

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

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

Также причиной может быть сбой на сервере баз данных 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/. Рекомендуем скопировать все необходимые файлы в директорию сайта.

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