500 - Internal server error / An error has occurred: 500
#Почему 500
«500 Internal Server Error» — общий ответ: причину знает только журнал. В Joomla это обычно синтаксическая ошибка в .htaccess, неподходящая версия PHP (после обновления хостинга), нехватка памяти или времени исполнения, сбойное расширение или шаблон, неверные права/владелец, повреждённый configuration.php, проблемы с подключением к базе данных. Найти причину можно за несколько минут, если смотреть в нужные файлы.
#Причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Ошибка в .htaccessНеподдерживаемая директива. | После переименования сайт открывается. | Исправьте или верните стандартный файл. |
| Несовместимая версия PHPСлишком новая или старая. | Fatal error в журнале. | Подберите версию по требованиям Joomla. |
| Сбойное расширениеПлагин, модуль. | Ошибка указывает на путь plugins. | Отключите расширение. |
| Нехватка памятиmemory_limit. | Allowed memory size exhausted. | Увеличьте лимит. |
| Нет подключения к БДНеверные данные или сервер недоступен. | Ошибка соединения. | Проверьте configuration.php. |
| Неверные праваФайлы 777 или каталоги 600. | Хостинг блокирует. | Выставьте 755/644. |
#Порядок
- Откройте журнал ошибок веб-сервера и PHPЕсли после обновления Joomla появилась ошибка HTTP 500, войдите в панель хостинга и откройте журналы ошибок нужного домена; либо по SSH прочитайте последние строки
tail -n 50 /реальный/путь/error.log. Сопоставьте время и URL сбоя, найдитеFatal error, имя файла и расширения. Не переключайте сразу все параметры PHP: у ошибки 500 бывают разные причины. - Временно переименуйте .htaccessВ панели управления файлами найдите корневой
.htaccessсайта Joomla и скачайте его копию. Если в журнале Apache явно написаноInvalid command, найдите эту строку в.htaccessи сверьте поддержку директивы с Apache и хостером. Временно переименовать весь файл можно только в короткое окно обслуживания, понимая, что изменятся маршрутизация и ограничения доступа; после проверки обязательно верните прежнее имя. - Проверьте совместимость версий PHP, Joomla и расширенийПроверьте, что PHP выбранной для домена версии соответствует установленной версии Joomla и расширений. При необходимости откройте на тестовой копии
configuration.phpв файловом менеджере и включите подробное журналирование только для поиска ошибки. Не показывайте стек посетителям публичного сайта; после диагностики верните исходные значенияdebugиerror_reportingи удалите временные диагностические файлы. - Проверьте версию PHP на соответствие версии JoomlaЕсли журнал указывает на конкретный системный плагин, сначала отключите его в административном интерфейсе Joomla на тестовой копии. Если вход не работает, опытный администратор может изучить таблицу расширений в phpMyAdmin, предварительно экспортировав базу; префикс таблиц берите из
configuration.php, а не используйте буквальныйjos_. Не выполняйте UPDATE из примера без точного ID плагина и проверки результата SELECT. - Отключите недавно установленные расширения через базу данныхЕсли сбой начался после обновления темы, откройте в Joomla «Система → Шаблоны сайта»/раздел шаблонов своей версии и выберите штатный рабочий шаблон из числа уже установленных. Через базу менять флаги
homeможно лишь при восстановлении с резервной копией и с учётом версии Joomla. Не выполняйте массовыйUPDATEвсех строк таблицы шаблонов: он способен нарушить назначение страниц и языков. - Переключите шаблон на стандартныйВ панели хостинга откройте раздел версии PHP, сравните текущие настройки и список необходимых расширений с требованиями установленной Joomla. При SSH проверьте
php -v, но учтите, что консольный PHP может отличаться от веб-обработчика. В журналах PHP ищитеClass not found,undefined function, нехватку памяти и несовместимость модуля; исправляйте установленную причину на копии сайта. - Проверьте права: каталоги 755, файлы 644, configuration.php 444 или 644Если обновление оборвалось, проверьте через файловый менеджер свободное место, права владельца на каталоги Joomla и существование файлов обновлённого ядра. Не загружайте случайный архив поверх сайта. Восстановите работоспособность из резервной копии, совместимой с базой, либо используйте официальный пакет восстановления именно установленной версии. После восстановления повторите обновление на тестовом домене.
- Проверьте свободное место и подключение к БДПосле устранения ошибки откройте главную страницу,
/administrator, несколько внутренних страниц и проверьте создание черновика или загрузку изображения. Просмотрите новые строки журнала — они должны относиться к успешному выполнению без прежнего исключения. Верните обычное журналирование, проверьте разрешения наconfiguration.phpи сохраните информацию о причине для следующего обновления. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#После устранения
Верните параметры error_reporting в значение default и отключите debug, чтобы посетители не видели технические сообщения. Сделайте резервную копию сайта (Akeeba Backup) и обновите расширения до версий, совместимых с вашей Joomla и PHP.