Joomla 3.8 выдаёт ошибку Call to undefined method JApplicationSite::isClient()

При клонировании Joomla 3.8.8 или 3.8.10 появилась ошибка:

Joomla Fatal error: Call to undefined method JApplicationSite::isClient() in /var/www/html/ имя_сайта /plugins/system/logout/logout.php on line 48

Для разных версий может быть ошибка в строке 44, 48, 49 или других. Это не суть важно.

Самое удивительное в этой ситуации, что исходный сайт работал и работает, а клон отказывается запускаться!

Как всегда и бывает в подобных ситуациях, поиск в сети не дал никаких результатов. Только витиеватые советы запускать какие-то самописные скрипты, в том числе online (расположенные на чужом сервере)! Просто за гранью абсурда.

Неужели опять спасать себя самому?

Первые подозрения пали на конфигурацию хостинга и на версию PHP. Поэтому на разных VDS были испробованы все разумные варианты: PHP 5.6.35, PHP 5.6.36, PHP 7.0.10, PHP 7.2.6. Но это никак не повлияло на результат.

Пришлось разбираться уже досконально. В результате детального анализа появилась гипотеза, что Джумла подгружает некоторые файлы ядра "не оттуда". Например, factory.php был подключен из  libraries/joomla в то время как должен был бы из libraries/src. Редактирование на скорую руку показало, что таких файлов больше трёх!.. Дальше я копаться не стал.

В результате было решено вручную заменить файлы ядра Джумлы, которые располагаются в директории /libraries. Пришлось переименовать старую /libraries в /libraries.old. Затем с официального сайта был скачан полный архив с актуальной версией Joomla в формате zip, и вот уже из него скопирована /libraries. О, да... Так заработало!

Победа!

Выводы

С версии 3.7.5 движок Joomla может обновляться некорректно: не удаляются старые версии файлов. Увы, это приводит к тому, что старые файлы могут подгружаться во время работы сайта. На данный момент проблема решается на уровне переместить/копировать директорию.

5 комментарии

  • Валерий

    написал Валерий

    Воскресенье, 02 Сентябрь 2018 16:16

    Помогло!
    Благодарю.

  • Владимир Драч

    написал Владимир Драч

    Вторник, 25 Декабрь 2018 00:00

    Валерий, спасибо за отзыв!

  • Макс

    написал Макс

    Пятница, 04 Январь 2019 11:09

    Спасибо, тоже помогло! Система обновлений в Joomla реализована не лучшим образом. Всегда делаю бэкап перед обновлением. Каждый раз с опаской жму "Обновить" и жду, что что-то вылезет и пойдет не так :)

  • Сергей

    написал Сергей

    Суббота, 19 Январь 2019 22:40

    Спасибо!
    Помогло. Быстро и эффективно. :)

  • Владмимр

    написал Владмимр

    Четверг, 07 Март 2019 19:02

    Спасибо помогло , НО !!! ВАЖНЫЙ НЮАНС , промаился целый , суть именно в том чтобы полностью заменить папку libraries , т.к. от старой версии в ней остаются файлы которые коверкают работу движка ( ClassLoader.php , composer_autoload.php и т.д. ) , если заливать поверх или устанавливать обновления они остаются и видимо где-то в коде подключаются.

Авторизуйтесь, чтобы получить возможность оставлять комментарии

Другие материалы в этой категории:

Go to top