^

Вход/Регистрация

Блоги пользователей

Исправление несовместимости Joomla 1.5 с PHP 5.3

 Joomla 1.5 не совместима с PHP 5.3.0 из-за вызова некоторых функций с параметрами-ссылками. Это чаще всего проявляется в неотображении пунктов главного меню. При включении отображения всех ошибок и предупреждений вместо пунктов меню мы увидим следующее предупреждение:
«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)
Для админки делаем следующее.
В файле /libraries/joomla/html/html/menu.php заменяем строку (124)
function treerecurse( $id, $indent, $list, &$children, $maxlevel=9999, $level=0, $type=1 )
на
function treerecurse( $id, $indent, $list, $children, $maxlevel=9999, $level=0, $type=1 )
В файле /libraries/joomla/html/html/grid.php заменяем строки (65), (93), (115) и (157)
function access( &$row, $i, $archived = NULL ) //65
...
function checkedOut( &$row, $i, $identifier = 'id' ) //93
...
function published( &$row, $i, $imgY = 'tick.png', $imgX = 'publish_x.png', $prefix='' ) //115
...
function _checkedOut( &$row, $overlib = 1 ) //157
на
function access( $row, $i, $archived = NULL ) //65
...
function checkedOut( $row, $i, $identifier = 'id' ) //93
...
function published( $row, $i, $imgY = 'tick.png', $imgX = 'publish_x.png', $prefix='' ) //115
...
function _checkedOut( $row, $overlib = 1 ) //157
Вы также можете получить сообщения вроде такого:
«Deprecated: Function eregi() is deprecated in .../modules/mod_cblogin/mod_cblogin.php on line 81»
Функция eregi() для PHP 5.3 и выше устарела и должна быть заменена функцией preg_match(). Ищем нужную строку в указанном в сообщении файле и заменяем
eregi("XXXYYYZZZ",$str)
на
preg_match("/XXXYYYZZZ/i",$str)
Также могут появляться сообщения об устаревшем способе присваивания указателя на создаваемый объект в различных модулях и компонентах (в PHP 5.3 и выше это уже указатель по умолчанию). Сообщения об этом однотипны и имеют вид «Deprecated: Assigning the return value of new by reference is deprecated in [путь/к/файлу/файл.php] on line [номер_строки]», где указаны файл и строка, содержащие ошибочную запись. Нужно найти этот файл и в указанной строке убрать знаки &.
Например, было:
$params =& new mosParameters('');
Должно быть:
$params = new mosParameters('');
Так делаем с каждой ошибкой.

 

 

Навчальні курси масажу, курси масажу ціни львів | кзу- 2 капюшон защитный универсальный от компании

Copyrigcht © 2017 Яндекс.Метрика