Были проверены все файлы, которые использовались для загрузки основных классов или поддержки загрузки основных классов, в частности, следующих двух файлов:
Файл loader.php, который находится в папке library / cms / class / .
Файл ClassLoader.php, который находится в папке library / vendor / composer .
Сайт работал на версии PHP 5.4, и поэтому мы переключились на 5.6, а затем на 7.0, а затем на 7.1. Ошибка сохранялась.
Чтобы исключить ошибки хостинга, сайт был перенесен на локальный сервер, где он точно также выдавал «белый экран».
Подобная ошибка возникала несколько лет назад, при обновлении версии 3.1.1 ошибка была вызвана загрузкой старых файлов library Joomla вместо новых. Итак, мы переименовали папку существующих library в library_old , и скопировали новую копию папки library на сайт … и сайт заработал
Итак, проблема была вызвана неправильным файлом библиотеки, но каким из них? Мы сделали список файлов и сравнили с нерабочим сайтом.
Как оказалось, некоторые файлы были подключены по неверным путям.
Например, файл factory.php был включен из папки library / joomla вместо папки library / src . Было также много файлов, включенных в папку library / cms , и эти файлы были включены из папок, которые больше не должны существовать в папке library / cms . Фактически, папка библиотек / cms в Joomla 3.8 содержит только 3 папки (Joomla 3.7.5 имеет 30 папок внутри папки библиотек / cms ).
Вероятно, заказчик либо обновил сайт вручную (например, перезаписав файлы из новой установки Joomla), либо клиент обновил сайт через админ панель, но со старого сервера обновлений Joomla, где процесс обновления не включает удаление старых библиотечные файлы / папки.
В любом случае стоит признать, что это проблема разработчиков Joomla, которая должна учитывать любой вариант обновления. Поскольку разработчики указывают что - «разница с 3.7.5 весьма незначительна», а на деле в структуре файлов в Joomla 3.8 происходит огромное изменение.
Восстановление сайта из резервной копии вернее всего не приносит результата, поскольку файлы из резервной копии перезаписываются поверх существующих. При данной ошибке сначала нужно удалить все файлы из директории сайта, а после чего «откатиться».
Подводя итоги.
Избавиться от ошибки можно двумя способами.
Первый
Итак, если вы видите ошибку Call of undefined JApplicationSite :: isClient () на своем веб-сайте Joomla, попробуйте переименовать папку библиотек в library_old, а затем скопируйте папку library из новой установки Joomla 3.8.
Второй
Загрузите, с заменой файлов ту версию Joomla, на которой сайт работал, а потом через админ панель сделайте обновление, обновление может проходить в несколько этапов. После каждого удачного обновления делайте резервную копию и проверяйте ошибки базы, при необходимости делайте исправления