Версия php 5.3 и Joostina, Joomla 1.0, Joomla 1.5

Комментарии к записи Версия php 5.3 и Joostina, Joomla 1.0, Joomla 1.5 отключены

Рано или поздно владелец сервера или пользователь виртуального хостинга сталкивается с обновлением версии php. И тут у сайтов на устаревших cms начинаются проблемы.

В частности очень много людей в свое время сделали или заказали сайты на Joomla 1.x или Joostina. Ниже приведен ряд действий, которые позволят восстановить работоспособность Ваших сайтов на php 5.3.

Яндекс Практикум

Фото: Версия php 5.3 и Joostina, Joomla 1.0, Joomla 1.5

Предупреждения на сайте в модуле меню

Warning: Parameter 3 to showBlogCategory() expected to be a reference, value given in .../includes/Cache/Lite/Function.php on line 52
Warning: Invalid argument supplied for foreach() in .../modules/mod_mljoostinamenu.php on line 365

GeekBrains

лечатся так:

Открываем файл function.php, находим строку:

$arguments = func_get_args();

и меняем её на:

$arguments = func_get_args();
$numargs = func_num_args();
for($i=1; $i < $numargs; $i++){
$arguments[$i] = &$arguments[$i];
}

Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in .../libraries/joomla/cache/handler/callback.php on line 99

Правим файл /modules/mod_mainmenu/helper.php:

В строке 31:

function buildXML(&$params)

меняем на:

function buildXML($params)

Проблемы с работоспособностью формы обратной связи.

Fatal error: Cannot redeclare quoted_printable_encode() in .../includes/vcard.class.php on line 74

Меняем файл vcard.class.php (архив приложен в конце статьи).

Предупреждение при редактировании профилей пользователей или при редактировании содержимого:

Warning: Parameter 1 to DOMIT_Lite_Parser::startElement() expected to be a reference, value given in .../includes/domit/xml_saxy_shared.php on line 159
Warning: Parameter 1 to DOMIT_Lite_Parser::startElement() expected to be a reference, value given in .../includes/domit/xml_saxy_shared.php on line 169
Warning: Parameter 1 to DOMIT_Lite_Parser::startElement() expected to be a reference, value given in .../includes/domit/xml_saxy_shared.php on line 162

Открываем файл xml_saxy_shared.php и правим:

строку 159:

call_user_func($this->startElementHandler,$this,$tagName,$attributes);

меняем на:

call_user_func($this->startElementHandler,&$this,$tagName,$attributes);

строку 162:

call_user_func($this->endElementHandler,$this,$tagName);

меняем на:

call_user_func($this->endElementHandler,&$this,$tagName);

строку 169:

call_user_func($this->characterDataHandler,$this,$data);

меняем на:

call_user_func($this->characterDataHandler,&$this,$data);

Номера строк и содержимое могут меняться в зависимости от cms и её версии, Вам нужно лишь к $this добавить &.

Сообщения на сайте об устаревших элементах:

Deprecated: Function set_magic_quotes_runtime() is deprecated in .../includes/Cache/Lite.php on line 524

Правим файл lite.php:

строку 524:

set_magic_quotes_runtime(0);

меняем на

ini_set("magic_quotes_runtime", 0);

строку 530:

set_magic_quotes_runtime($mqr);

меняем на

ini_set("magic_quotes_runtime",$mqr);

Deprecated: Assigning the return value of new by reference is deprecated in .../mambots/mbox/mbox_plugin.php on line 215

Правим файл mbox_plugin.php:

строку 215:

$param = & new mosParameters( $mambot->params );

меняем на

$param = new mosParameters( $mambot->params );

т.е. убираем символ &.

Не работает JA Highslide Plugin

Warning: Parameter 2 to plgContentJA_highslide::onPrepareContent() expected to be a reference, value given in .../libraries/joomla/event/event.php on line 67

Правим файл event.php:

В строке 67:

return call_user_func_array ( array($this, $event), $args );

меняем на:

$args[1] = & $args[1];
return call_user_func_array ( array($this, $event), $args );

Warning: Parameter 2 to plgContentEmailCloak() expected to be a reference, value given in .../libraries/joomla/event/dispatcher.php on line 136

Правим файл dispatcher.php:

В строке 136:

$result[] = call_user_func_array($observer['handler'], $args);

меняем на:

$args[1] = & $args[1];
$result[] = call_user_func_array($observer['handler'], $args);

Правим файл php.ini

В том случае, если на сайте остались еще ошибки, находим на хостинге файл php.ini и добавляем в него строку:

mbstring.func_overload = 7

Прикладываю архивом отредактированные файлы.