Я неоднократно говорил: «Перенос сайта с Joomla 3 на Joomla 4 или более старшие версии — это в первую очередь решение типовых задач». Дабы сэкономить в будущем время себе и потомкам, я пишу шпаргалки, каждая из которых помогает решить тот или иной вопрос. Сегодня мы рассмотрим достаточно частую ошибку при миграции сайта на новую версию Joomla.
Итак, вы обнаружили ошибку:
Ошибка Failed opening required '.../components/com_content/helpers/route.php'
Сам текст ошибки в вашем случае будет отличаться от того, что написан у меня, поскольку в вашем случае будет указан полный путь к файлу route.php.
Ищем где
Первое, что мы должны сделать — понять, в каком файле вызывается ошибка.
Для этого в общих настройках сайта необходимо включить режим отладки.
После этого вернемся на ту страницу сайта, где отображалась ошибка.
Мы увидим не только сообщение об ошибке, но и список вызываемых классов, методов и файлов.
Нас интересует последняя запись.
Как видим, в моем случае ошибка произошла на семнадцатой строке файла helper.php модуля mod_news_pro_gk5.
Откроем упомянутый выше файл и посмотрим: что же именно происходит на 17 строке?
А происходит там следующее:
require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
Вызывается файл, который в Joomla 4 и Joomla 5 находится в другом месте. А по указанному пути совершенно ничего нет, что и приводит к ошибке.
Чтобы устранить ошибку, мы должны заменить данную строчку на две строки:
require_once JPATH_SITE. DIRECTORY_SEPARATOR.'components' .DIRECTORY_SEPARATOR.'com_content'.DIRECTORY_SEPARATOR.'src' .DIRECTORY_SEPARATOR.'Helper'.DIRECTORY_SEPARATOR.'RouteHelper.php'; require_once JPATH_SITE. DIRECTORY_SEPARATOR.'components' . DIRECTORY_SEPARATOR.'com_content'. DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR.'Service' . DIRECTORY_SEPARATOR.'Router.php';
На этом, собственно говоря, всё.
Ошибка исправлена. Уверен, что вас ждут новые не менее интересные задачки при переезде с Joomla 3.
Если у вас остались вопросы, с нетерпением жду их в своей группе по ссылке ниже:
С уважением, Владимир Егоров