В данной статье мы рассмотрим наиболее вероятные причины возникновения ошибки 500 "Internal Server Error". Причины указаны в порядке вероятности возникновения.
Использование в файлах .htaccess
недопустимых на нашем хостинге конструкций, например Options
-MultiViews
или php_value
и php_flag
. Вы можете открыть файл .htaccess
текстовым редактором и
найти строки, в начале которых используются указанные конструкции. Найденные строки можно удалить
или добавить #
в начале. Файл .htaccess
может находиться в корневом каталоге вашего сайта - на
том же уровне, что и файлы index.php или index.html или robots.txt.
Скрипт пытается получить больше памяти, чем ограничено параметром memory_limit
. Обычно
достаточно увеличить этот параметр в панели
управления. Увеличивать стоит постепенно, с шагом в
16 - 32 Мб, пока ошибка не пропадет. Новые настройки PHP вступают в силу в течение 3-5 минут.
В панели управления или в php.ini
включены не совместимые друг с другом расширения php.
Например, одновременное включение eaccelerator и APC, либо eaccelerator и XCache почти наверняка
будет приводить к ошибке Segmentation Fault и, как следствие, к ошибке Internal Server Error на
сайте.
Если вы редактировали какие либо файлы сайта в ОС Windows, то при сохранении в файл могли добавиться не совместимые с unix-форматом символы переноса строки. Для корректной работы необходимо использовать совместимые с unix-форматом переносы строк. Например, в Notepad++ этот параметр можно настроить в меню "Правка" -> "Формат конца строк" -> "Преобразовать в UNIX-формат".
Слишком долгая работа скрипта (может быть связано, например, с выгрузкой товаров на сайте, либо другими долгими запросами). Если веб-сервер не получает никакого ответа от скрипта в течение 120 секунд, скрипт считается зависшим и его работа принудительно завершается с выдачей ошибки 500. Изменить это ограничение в индивидуальном порядке на виртуальном хостинге нельзя. В качестве решения вы можете запускать выполнение скрипта, разбив данные на части, либо через cron либо напрямую через ssh-соединение.
Скрипт возвращает HTTP-заголовки, которые веб-сервер не может распознать и не понимает как интерпретировать.
Однозначно определить источник ошибки поможет включение лога ошибок. Для этого потребуется зайти в панель управления https://panel.netangels.ru/virtualhosts/ , слева от названия сайта кликнуть на иконку с тремя горизонтальными полосками и выбрать "Журнал ошибок". Когда ошибки возникнут, то в домашнем каталоге на сервере появится файл вида sitename.ru-error.log, где sitename.ru - имя сайта, для которого вы включили лог ошибок.
Логи ошибок сохраняются в обычные текстовые файлы, их можно просмотреть подключившись к хостингу по протоколу FTP. Инструкция по подключению.
Так же может быть полезно включить лог php ошибок поставив галочку напротив пункта error.log и нажав кнопку сохранить. Лог ошибок будет сохранен в файле log/php-errors.log.