В данной статье пойдет
речь о старой версии Джумла, а именно
о ветке 1.0. Возникает логичный вопрос
зачем? Ведь уже есть Joomla 3.0 и кому взбредет
в голову пользоваться таким «старьем»...
Но как показывает практика... сайты на
первой ветке Joomla все еще не редкость в
интернете. И не смотря на свой почтенный
возраст они продолжают работать и
приносить пользу своим владельцам.
Разработкой новых сайтов я занимаюсь
исключительно на актуальных версиях,
но поддержка старых сайтов (своих и
клиентских) не дает мне возможности
расстаться с прошлым.
Немного лирики... "Завалялись" у меня парочка стареньких сайтов написанных давным-давно на вышеупомянутой версии. «Висели» на копеечном хостинге. Работали исправно и, как говориться, «кушать не просили». Даже наоборот, приносили кое-какую денежку, не смотря на то что я ими вообще не занимался. И все бы хорошо, но в один прекрасный день, зайдя на сайт я обнаружил маленькую, но досадную неприятность. Сайт как-бы работал... То есть отображался шаблон, меню и другие модули, а вот материалы сайта отсутствовали.
Поскольку я правок никаких не вносил, сразу подумал что проблема на стороне хостинга. Но на всякий случай залогинился в админку и посмотрел все ли нормально с публикацией материалов и т.д. и т.п. Затем зашел в раздел поддержки хостинга и открыл новый тикет в котором сообщил о проблеме. Мол так и так... На Joomla 1.0 не отображается контент сайта. Изменений никаких не вносил, подскажите причину сбоя. На следующий день получаю ответ от «техподдержки». В котором мне сообщают «Обновите Joomla» Сначала меня это конечно улыбнуло, потом огорчило... Какого черта этот хостер мне рассказывает на каком движке я должен делать сайты... Какая ему разница ?! Сайт работал. Нагрузки не создавал. Лимиты не превышал. Этим сайтам сто лет. Сто лет я ими не занимался, не планировал ими заниматься и сто лет бы они еще простояли если бы не произошли изменения на веб сервере.
Я вежливо отвечаю. Я осведомлен, что моя версия Joomla далеко не самая последняя. Извините мол.. Но переход на новую версию «движка» не планируется. Меня и так все устраивало. Необходимо разобраться с причиной сбоя и устранить ее.
Ответ «техподдержки» на корявом русском языке: «Сайты на Джумла ломаются даже школьниками, если они не на новой версии. Вы хотите чтобы вас сломали разослали спам с вашего аккаунта и мы вас оштрафовали? Или обновиться?»
Первой мыслью пришедшей в голову после прочтения этого «технически грамотного» и очень полезного (в деталях раскрывающего суть проблемы) комментария было нагрубить и послать их куда подальше вместе с их «замечательным» хостингом. Вместо того чтобы разобраться в ситуации и подойти к решению проблемы (По их вине, а в этом я уже не сомневался, обвалилось три сайта с риском вылета из индекса поисковых систем) они отписывают мне эти идиотские комментарии, не содержащие даже намека на какую-либо квалифицированную помощь, да еще и штрафами пугают...
Но собрав волю в кулак :) решил так не делать... Потому как в таком случае, возникнет необходимость в трате времени на поиски нового хостера, переносе сайтов и т. д. Раз техническая поддержка не идет на контакт — придется решить проблему самостоятельно. Благо решение «нагуглилось» быстро.
Суть проблемы оказалась в том, что провайдер перешел на PHP версии 5.3 , не удосужившись даже известить клиентов об предстоящих изменениях на сервере (я уже молчу про то что нормальные хостеры вообще дают возможность выбора версии PHP под каждый конкретный проект. Но здесь цена, как я уже говорил ранее, копеечная — качество соответственно такое же...) Поэтому улыбаемся и машем закатываем рукава и
патчим :)
Открываем configuration.php и добавляем следующее:
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); date_default_timezone_set('Europe/Moscow');
Заодно меняем
$mosConfig_error_reporting = '-1'; на $mosConfig_error_reporting = '0';
Затем открываем файл /includes/Cache/Lite/Function.php и меняем строку:
$result = call_user_func_array(array($class, $method), $arguments);
на
$result = call_user_func_array(array($class, $method), &$arguments);
, а строку
$result = call_user_func_array($target, $arguments);
на
$result = call_user_func_array($target, &$arguments);
Затем переходим к файлу includes/joomla.php
Находим
$params =& new mosParameters( $my->params, $file, 'component' );
и меняем на
$params = new mosParameters( $my->params, $file, 'component' );
Собственно все... После прведения данных манипуляций все нормализовалось и контент снова стал доступен.
Немного лирики... "Завалялись" у меня парочка стареньких сайтов написанных давным-давно на вышеупомянутой версии. «Висели» на копеечном хостинге. Работали исправно и, как говориться, «кушать не просили». Даже наоборот, приносили кое-какую денежку, не смотря на то что я ими вообще не занимался. И все бы хорошо, но в один прекрасный день, зайдя на сайт я обнаружил маленькую, но досадную неприятность. Сайт как-бы работал... То есть отображался шаблон, меню и другие модули, а вот материалы сайта отсутствовали.
Поскольку я правок никаких не вносил, сразу подумал что проблема на стороне хостинга. Но на всякий случай залогинился в админку и посмотрел все ли нормально с публикацией материалов и т.д. и т.п. Затем зашел в раздел поддержки хостинга и открыл новый тикет в котором сообщил о проблеме. Мол так и так... На Joomla 1.0 не отображается контент сайта. Изменений никаких не вносил, подскажите причину сбоя. На следующий день получаю ответ от «техподдержки». В котором мне сообщают «Обновите Joomla» Сначала меня это конечно улыбнуло, потом огорчило... Какого черта этот хостер мне рассказывает на каком движке я должен делать сайты... Какая ему разница ?! Сайт работал. Нагрузки не создавал. Лимиты не превышал. Этим сайтам сто лет. Сто лет я ими не занимался, не планировал ими заниматься и сто лет бы они еще простояли если бы не произошли изменения на веб сервере.
Я вежливо отвечаю. Я осведомлен, что моя версия Joomla далеко не самая последняя. Извините мол.. Но переход на новую версию «движка» не планируется. Меня и так все устраивало. Необходимо разобраться с причиной сбоя и устранить ее.
Ответ «техподдержки» на корявом русском языке: «Сайты на Джумла ломаются даже школьниками, если они не на новой версии. Вы хотите чтобы вас сломали разослали спам с вашего аккаунта и мы вас оштрафовали? Или обновиться?»
Первой мыслью пришедшей в голову после прочтения этого «технически грамотного» и очень полезного (в деталях раскрывающего суть проблемы) комментария было нагрубить и послать их куда подальше вместе с их «замечательным» хостингом. Вместо того чтобы разобраться в ситуации и подойти к решению проблемы (По их вине, а в этом я уже не сомневался, обвалилось три сайта с риском вылета из индекса поисковых систем) они отписывают мне эти идиотские комментарии, не содержащие даже намека на какую-либо квалифицированную помощь, да еще и штрафами пугают...
Но собрав волю в кулак :) решил так не делать... Потому как в таком случае, возникнет необходимость в трате времени на поиски нового хостера, переносе сайтов и т. д. Раз техническая поддержка не идет на контакт — придется решить проблему самостоятельно. Благо решение «нагуглилось» быстро.
Суть проблемы оказалась в том, что провайдер перешел на PHP версии 5.3 , не удосужившись даже известить клиентов об предстоящих изменениях на сервере (я уже молчу про то что нормальные хостеры вообще дают возможность выбора версии PHP под каждый конкретный проект. Но здесь цена, как я уже говорил ранее, копеечная — качество соответственно такое же...) Поэтому
Открываем configuration.php и добавляем следующее:
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); date_default_timezone_set('Europe/Moscow');
Заодно меняем
$mosConfig_error_reporting = '-1'; на $mosConfig_error_reporting = '0';
Затем открываем файл /includes/Cache/Lite/Function.php и меняем строку:
$result = call_user_func_array(array($class, $method), $arguments);
на
$result = call_user_func_array(array($class, $method), &$arguments);
, а строку
$result = call_user_func_array($target, $arguments);
на
$result = call_user_func_array($target, &$arguments);
Затем переходим к файлу includes/joomla.php
Находим
$params =& new mosParameters( $my->params, $file, 'component' );
и меняем на
$params = new mosParameters( $my->params, $file, 'component' );
Собственно все... После прведения данных манипуляций все нормализовалось и контент снова стал доступен.
Огромное спасибо, автор!После долгих страданий и мучений ваша статья помогла мне исправить ситуацию. спасибо вам прибольшое. Только вот эта вставка в configuration файл оказалась лишней:
ОтветитьУдалитьerror_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); date_default_timezone_set('Europe/Moscow');
теперь не могу решить вопрос с тем как заставить работать некоторые компоненты, видимо они тоже из-за новой версии php не работают. Если у вас есть какие то соображения - буду очень признательна!
Добрый день. Рад что статья Вам пригодилась. Касательно Вашего вопроса... К сожалению, здесь нет универсальных решений. Если компоненты достаточно старые, велика вероятность того, что они писались под более ранние версии PHP. Как следствие, на актуальных версиях, корректно работать не будут. Включаем детализацию ошибок и смотрим на проблемные места в коде. Все правим вручную. Только так...
УдалитьСпасибо! Столкнулся с той же проблемой и по той же причине. Очень помогло
ОтветитьУдалитьРад был помочь.
Удалитьа безопасность не пострадает от таких изменений?
ОтветитьУдалитьНет.
УдалитьНо стоит отдавать себе отчет в том, что Вы все таки пользуетесь старой версией продукта. На которую уже давно не выходят ни багфиксы ни обновления безопасности. Так что тут, как говориться, пользуетесь на свой страх и риск. Новые сайты рекомендую делать на актуальной версии движка.
Низкий поклон тебе, Автор!
ОтветитьУдалитьСпасибо тебе Автор из 2021 г.!
ОтветитьУдалитьВсе еще на первой Joomle .!?
УдалитьВпечатляет ))