Работоспособность Joomla при смене версии PHP (11.01.2013). Печать
2013 - Январь
11.01.2013 12:37
Save & Share

Это очень важная информация для администраторов Joomla.

Joomla версии 3.0.1, самая последняя на текущий момент, требует версию PHP на сервере не ниже 5.3.1. Я столкнулся с тем, что моей версией являлась 5.2.3. Оформил заявку в техподдержку: поставьте самую современную версию PHP. Поставили 5.3.18. Провел на тестовом домене успешную установку Joomla версии 3.0.1, а про свою Joomla v.1.5.5 как-то подзабыл.

Проходит полчаса. Получаю письмо, что у меня с Joomla v.1.5.5 проблемы. Захожу на сайт - менюшки не отображаются, ошибки "Warning" одна на другой. Захожу в админку - одни "Warning", "Warning", материалы не отображаются, настройки не отображаются. Караул, да и только.

Внешне это все выглядит страшно. Но если знать, что подправлять - решение всех проблем занимает 10 минут. С последней проблемой, которую здесь описываю, я возился 2 часа.

Чтобы исправить отображение всех меню в админке, правим файл /www/libraries/joomla/html/html.php. Перед строчкой "return call_user_func_array( array( $className, $func ), $args );" вставляем код:
$temp = func_get_args();
array_shift( $temp );
$args = array();
foreach ($temp as $k => $v)
{
   $args[] = & $temp[$k];
}

.

Чтобы исправить отображение общих настроек в админке, правим файл /www/libraries/joomla/cache/cache.php. Заменяем строчку "if(call_user_func_array( array( trim($class), 'test' ), null))" на "if (call_user_func_array(array(trim($class), 'test'), array()))". А также то же самое правим в файле /www/libraries/joomla/cache/cache.php.

Дополнительные компоненты могут ругаться ошибками другого рода: "Deprecated: Assigning the return value of new by reference is deprecated in...". Решается это путем нахождения строки типа "$this->_modules[$moduleType][$sig] = & new $moduleClass;" и стиранием в ней амперсанда.

Проблема восстановления работы меню решается таким способом. Находится файл /www/modules/mod_mainmenu/helper.php и стирается амперсанд в "function buildXML(&$params)".

Важность всей этой информации заключается ещё и в том, что некоторые хостеры сами могут поменять версию PHP без уведомления пользователя, и все эти танцы с бубном могут возникнуть внезапно. Также стоит отметить, что после смены версии PHP мне пришлось менять пароль на FTP, т.к. по старому не пускало.

Также стоит добавить, что в интернете очень много именно вредных советов по данной проблеме. Переустановить Joomla текущей версии (вообще неверный совет), установить Joomla новой версии (миграция с 1.5.x на 2.x и выше - тот ещё геморрой), перезагрузить сервер (неверный совет), откатиться обратно на PHP версии 5.2.x (а если мне это неподвластно или по иным причинам не хочу?) и т.д.

Обновлено ( 15.11.2013 12:43 )