Рано или поздно владелец сервера или пользователь виртуального хостинга сталкивается с обновлением версии php. И тут у сайтов на устаревших cms начинаются проблемы.
В частности очень много людей в свое время сделали или заказали сайты на Joomla 1.x или Joostina. Ниже приведен ряд действий, которые позволят восстановить работоспособность Ваших сайтов на php 5.3.
Краткое содержание
- 1 1. Предупреждения на сайте в модуле меню:
- 2 2. Проблемы с работоспособностью формы обратной связи.
- 3 3. Предупреждение при редактировании профилей пользователей или при редактировании содержимого:
- 4 4. Сообщения на сайте об устаревших элементах:
- 5 5. Не работает JA Highslide Plugin
- 6 6. Правим файл php.ini
1. Предупреждения на сайте в модуле меню:
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
лечатся так:
Открываем файл 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)
2. Проблемы с работоспособностью формы обратной связи.
Fatal error: Cannot redeclare quoted_printable_encode() in .../includes/vcard.class.php on line 74
Меняем файл vcard.class.php (архив приложен в конце статьи).
3. Предупреждение при редактировании профилей пользователей или при редактировании содержимого:
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 добавить &.
4. Сообщения на сайте об устаревших элементах:
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 );
т.е. убираем символ &.
5. Не работает 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);
6. Правим файл php.ini
В том случае, если на сайте остались еще ошибки, находим на хостинге файл php.ini и добавляем в него строку:
mbstring.func_overload = 7
Прикладываю архивом отредактированные файлы.