Если Joomla перестала открывать страницы после обновления, важно выяснить, что именно изменилось: сама CMS, шаблон, расширение или PHP на хостинге. Что означает код 500 вообще, разобрано отдельно. Здесь речь о причинах и проверках, характерных для Joomla.
Последнее изменение задает порядок проверки
Для исполнителя составьте короткую хронологию: когда сайт работал, что меняли и на каком действии заметили сбой. Разделите обновление Joomla, установку расширения и переключение PHP: это разные события, даже если их выполнили за один визит в панель управления.
Важна и область отказа: только страницы определенного компонента, весь сайт или также административная часть. Документация Joomla отмечает, что несовместимое расширение может нарушить и вход в управление сайтом. Поэтому недоступная админка еще не доказывает поломку ядра.
Текст ошибки разделяет сбой кода и настройку сервера
Ответ 500 приходит от сервера, но причина его нередко лежит в коде сайта. Разделить эти случаи помогает то, что именно названо в записи журнала. Названо имя класса или метода — речь о программном коде, которого не хватает в месте вызова. Названы время выполнения, объем памяти, отказ в доступе к файлу или сбой при запуске интерпретатора — проверку начинают с окружения.
Пропавший код — частый случай после перехода через основную версию. Встречаются обращения к исчезнувшему методу работы с модальными окнами, к методу определения административной части, к методу подключения скриптов с номером версии. Снаружи все три выглядят одинаково: страница отдает 500, а настройки сервера при этом в порядке.
Различие здесь практическое, а не теоретическое. Увеличение памяти и времени выполнения не вернет отсутствующий метод, а правка шаблона не поможет, если дело в ограничении хостинга. Прежде чем просить хостинг поднять лимиты, стоит убедиться, что в журнале названы именно ресурсы.
Совместимость PHP и отсутствующий код
После смены PHP сначала сопоставляют его версию с установленной Joomla и расширениями. У каждой ветки CMS свои технические требования, а расширение может иметь дополнительные ограничения. Если несовместимость подтверждена, нужно согласовать совместимый набор версий; для старой CMS это может потребовать отдельного обновления Joomla.
Отдельный случай — переключение на новую ветвь PHP под устаревшей CMS. Ошибки появляются сразу и во многих местах, и это не повод разбирать код: такая несовместимость лечится обновлением CMS, а не подгонкой сайта под чужую версию языка. Если обновление пока невозможно, вернуть прежнюю ветвь PHP — честное временное решение, которое дает время подготовить настоящее.
Другая ситуация — журнал сообщает об отсутствующем классе или методе, то есть части программного кода. При переходе между основными ветками Joomla устаревшие элементы могут исчезать: такие изменения перечисляют в документации по совместимости. Шаблон или расширение, сохранившие старые обращения, требуют проверки совместимости, а не автоматического увеличения ресурсов сервера.
Но имя отсутствующего элемента — направление поиска, а не готовый диагноз: нужно проверить и наличие файлов, и место вызова. Исполнитель определяет, требуется ли совместимая версия расширения или адаптация его обращений к Joomla. Владельцу сайта не нужно вручную заменять методы в файлах.
Пропавший метод закрывают проверкой на его наличие
Когда обращение к исчезнувшему методу найдено, у исполнителя есть рабочий прием: в шаблоне или расширении проверяют, существует ли прежний метод, и при его отсутствии вызывают современный эквивалент. Сайт после этого работает и на прежней версии CMS, и на новой. Это не временная заплата, такой код переживает следующее обновление.
Важнее другое: прием нужно применить ко всем местам, где вызывался старый метод, а не только к тому, которое всплыло первым. Одна исправленная страница ничего не говорит об остальных — тот же вызов может сидеть в редко открываемом разделе, в модуле или в фоновой задаче. Поэтому у задачи должен быть перечень найденных мест вызова, а у приемки — проверка по этому перечню.
Если совместимая версия расширения существует, обновить расширение обычно лучше, чем править его файлы. Собственные изменения внутри чужого расширения теряются при его следующем обновлении, и об этом договариваются заранее, а не после пропажи правок.
Прерванное обновление — отдельная ветка диагностики
Если процесс обновления остановился, а затем пропали сайт и админка, важно сохранить сообщение и этап остановки. Нельзя сразу считать причиной ошибку шаблона: сначала проверяют, согласованы ли файлы Joomla и структура базы. Официальная справка по базе данных прямо описывает их возможное расхождение после незавершенного обновления.
Исполнитель оценивает состояние установки на копии и выбирает способ привести ее в согласованное состояние. Возврат резервной копии тоже требует оценки: новые данные сайта могли появиться уже после ее создания. Повторный запуск обновления без понимания точки остановки не заменяет диагностику.
Права, configuration.php и служебные папки
В configuration.php Joomla хранит общие настройки, включая служебные пути. Для временных файлов tmp, журналов logs и кеша важны фактические адреса папок и доступ к ним со стороны PHP. Требования к этим каталогам описаны в справке общих настроек Joomla.
После переноса или изменения прав исполнитель проверяет не только существование каталога, но и возможность нужных операций от имени процесса PHP. Сообщение об отказе в доступе помогает выбрать эту проверку, однако менять права сразу на всех файлах оснований нет. Права самого configuration.php и права папки журналов решают разные задачи и не должны приводиться к одному значению.
Кеш и фоновые задачи требуют отдельного контроля
Устаревший кеш Joomla может вызывать проблемы отображения, что отмечено в документации по его очистке. Поэтому при проверке исправления важно убедиться, что результат получен после выполнения кода, а не из сохраненной страницы. Успех после очистки кеша сам по себе не доказывает, что найдена исходная причина 500.
Если на сайте настроены фоновые задачи, их результат проверяют отдельно от страниц. В Joomla задачи выполняются плагинами, а для контроля предусмотрены сведения о запусках, описанные в справке планировщика. Несовместимый код может мешать такой задаче, пока посетители продолжают открывать сайт; исполнителю нужны ее журнал и ожидаемый результат.
Такой отказ способен длиться долго и никому не попасться на глаза. Бывает, что фоновая задача месяцами пишет в свой журнал ошибки об отсутствующих классах прежнего программного интерфейса, а сайт в браузере при этом открывается без замечаний. Поэтому журналы задач просматривают отдельно: работающий сайт не доказывает, что его фоновые операции тоже завершаются.
Исправление подтверждают на затронутых функциях
На копии сайта проверяют выбранное изменение в сопоставимом окружении: с нужными версиями PHP, Joomla и расширений. Затем повторяют исходный сценарий и проверяют затронутые функции, включая административную часть и фоновые задачи, если сбой касался их. В результате работы должно быть понятно, какая причина подтверждена и чем это подтверждение отличается от первоначального предположения.
Для оценки пришлите URL проблемной страницы, время ошибки с часовым поясом, действие перед сбоем и список последних изменений. Добавьте известные версии Joomla и PHP, сообщение об остановке обновления и обезличенную выдержку из журнала, если она есть.