[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема после обновления PHP 5.3
Vitas1983
Доброго дня!
Deprecated: Assigning the return value of new by reference is deprecated in ***/public_html/includes/pear/MDB2.php on line 2565
Весь гугл перелопатил решение проблемы только для !Joomla. И для локальных серверов типа Денвера.
Следовательно все эти способы не работают.
Слышал, и читал, что в новой версии PHP убран значок & в присваивании.
Т.е. было =&new стало =new.
Следуя логам ошибок сервера я устранил все эти проблемы, но ошибка не исчезла.
Осталась строка, в которой упоминания о =&new нет в принципе.
вот код этой строки:
  if (!MDB2::isResultCommon($result)) { 

А вот функция целиком
function &_wrapResult($result, $types = array(), $result_class = true,

$result_wrap_class = false, $limit = null, $offset = null)

{

if ($types === true) {

if ($this->supports('result_introspection')) {

$this->loadModule('Reverse', null, true);

$tableInfo = $this->reverse->tableInfo($result);

if (PEAR::isError($tableInfo)) {

return $tableInfo;

}

$types = array();

foreach ($tableInfo as $field) {

$types[] = $field['mdb2type'];

}

}
else {

$types = null;

}

}




if ($result_class === true) {

$result_class = $this->options['result_buffering']

?
$this->options['buffered_result_class'] : $this->options['result_class'];

}



if ($result_class) {

$class_name = sprintf($result_class, $this->phptype);

if (!class_exists($class_name)) {

$err =& $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,

'result class does not exist '.$class_name, __FUNCTION__);

return $err;

}

$result = new $class_name($this, $result, $limit, $offset);

if (!MDB2::isResultCommon($result)) {

$err =& $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,

'result class is not extended from MDB2_Result_Common', __FUNCTION__);

return $err;

}

if (!empty($types)) {

$err = $result->setResultTypes($types);

if (PEAR::isError($err)) {

$result->free();

return $err;

}

}

}


if ($result_wrap_class === true) {

$result_wrap_class = $this->options['result_wrap_class'];

}

if ($result_wrap_class) {

if (!class_exists($result_wrap_class)) {

$err =& $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,

'result wrap class does not exist '.$result_wrap_class, __FUNCTION__);

return $err;

}

$result =new $result_wrap_class($result, $this->fetchmode);

}

return $result;

}



// }}}

// {{{ function getServerVersion($native = false)




/**

* return version information about the server

*

*
@param string determines if the raw version string should be returned

*

*
@return mixed array with version information or row string

*

*
@access public

*/


function getServerVersion($native = false)

{

return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,

'method not implemented', __FUNCTION__);

}

Все перерыл, нет решения данной проблемы. Она возникла исключительно после обновления на сервере PHP и до этого сайт прекрасно работал.
Решения в гугле с !Joomla и дэнвером не помогут. Никто php.ini менять не станет, да и ни к чему это...
Прошу помощи.



Спустя 4 часа, 35 минут, 37 секунд (8.04.2011 - 22:19) kirik написал(а):
Вот ответ, а там есть ссылка на "баг", а в баге ссылка на патч. В утке яйцо, а в яйце игла smile.gif

Спустя 23 часа, 33 минуты, 42 секунды (9.04.2011 - 21:53) Vitas1983 написал(а):
Спасибо!
вроде бы как все понятно и непонятно.
патч представляет собой скрипт в txt формате, и куда его внедрять на серврере понятия не имею.
его я скачал, а также скачал новый каталог MDB2. Ошибка не исчезла. где взять новый каталог pear? Хотя даже его удаление с серврера ошибку не устранило. Она вмонтировалась на сайт. Заказ больше на сайте сделать нельзя. Я стал заложником ситуации. Теперь со своим сайтом на новый хост переходить? Где еще php 5,0 используют что ли. А что будет если следующая версия выйдет? Выбросить свой сайт. Я в шоке... только усложняют жизнь. Из-за одного амперсенда перестало вообще проходить взаимодействие с базой данных.

Спустя 2 часа, 57 минут, 33 секунды (10.04.2011 - 00:50) kirik написал(а):
Vitas1983
Написано что баг закрыт в 2.5.0b2, а значит: можно попробовать поставить 2.5.0b3 или применить патч к стабильной версии 2.4.1.
Про применение патчей можно погуглить (тыц).
Советую начать со второго варианта.
Если ошибки будут указывать не на саму pear библиотеку, а на файлы движка сайта, то нужно править их.

Спустя 7 минут, 56 секунд (10.04.2011 - 00:58) Vitas1983 написал(а):
Ставил. Скачал по первому Вашему совету патч MDB2 и распаковал его. содержимое отправил на сервер. Заменил директории в папке pear. Но ничего не помогло. А по поводу чтения патчей - спасибо, интересно. Но мне также интересно, почему даже при удалении каталога pear с сервера в заголовке сайта он все равно на него ругается. И устранение ошибок по логам сервера ошибку не устраняет. Более того, после выхода новой версии php перестало работать взаимодействие базы данных и самого сайта. Т.е. оформить заказы невозможно, в панели управления просмотреть заказы также невозможно. Связь порвалась... И причины этому скорее всего не только в папке pear и в версии php. Я слаб в php но разобраться для меня дело чести и дело принципа. Неоднократно выходил победителем в более сложных ситуациях. Эта проблема первоначально не сулила сложностей. Но я ошибся.

Спустя 9 минут, 1 секунда (10.04.2011 - 01:07) kirik написал(а):
Цитата (Vitas1983 @ 9.04.2011 - 17:58)
Но ничего не помогло.

Ошибка осталась та же самая, на которую вы указали в первом посте?

Цитата (Vitas1983 @ 9.04.2011 - 17:58)
Более того, после выхода новой версии php перестало работать взаимодействие базы данных и самого сайта. Т.е. оформить заказы невозможно, в панели управления просмотреть заказы также невозможно. Связь порвалась..

Я так понимаю что все запросы выполняются через эту самую библиотеку MDB2, а так как она "сломалась", то и запросы дальше неё не уходят. Т.е. если пофиксить в этом месте, то сайт снова заработает.

Спустя 4 минуты, 22 секунды (10.04.2011 - 01:12) Vitas1983 написал(а):
Верно. Но библиотеку я и удалял, и менял, и патчил, и по гуглу устранял амперсенды, но ничего, вообще ничего не помогло. Это просто невероятно. Стоит на сервере удалить один файл, и сайт вообще не открывается. Но удаление каталога pear и находящегося в нем MDB2.php вообще на сайт не производит никакой реакции. Как все было, так и осталось...

Спустя 1 час, 2 минуты, 49 секунд (10.04.2011 - 02:14) kirik написал(а):
Цитата (Vitas1983 @ 9.04.2011 - 18:12)
удаление каталога pear и находящегося в нем MDB2.php вообще на сайт не производит никакой реакции. Как все было, так и осталось...

Вот это наводит на мысль, что этот каталог никак не используется приложением - он просто есть. Нужно найти настоящий MDB2 и исправить его. Вероятно он установлен через pear (а не просто залит по фтп), и исправить его может тот кто ставил.
У вас есть доступ к консольке с root аккаунтом?

UPD
рут не нужен, просто консолька..

Спустя 44 минуты, 3 секунды (10.04.2011 - 02:59) Vitas1983 написал(а):
Это уже на хосте править нужно?
к панели управления хостом у меня доступ есть...
К структуре сайта тоже. Но вот путь к MDB2 указывается именно тот, что я и нахожу на сервере. А где настоящий MDB2 это вопрос большой...

Спустя 9 минут, 24 секунды (10.04.2011 - 03:08) kirik написал(а):
Цитата (Vitas1983 @ 9.04.2011 - 19:59)
Это уже на хосте править нужно?

Нужна консоль (ssh доступ), чтобы pear пакет поставить.

Цитата (Vitas1983 @ 9.04.2011 - 19:59)
путь к MDB2 указывается именно тот, что я и нахожу на сервере

И при удалении mdb2 по этому пути сайт продолжает функционировать?

Спустя 1 минута, 23 секунды (10.04.2011 - 03:09) Vitas1983 написал(а):
Совершенно верно.
я уже все перепробовал...
удалял, обновлял, правил, издевался над файлом и каталогом. Сайт функционирует...

Спустя 3 минуты, 54 секунды (10.04.2011 - 03:13) kirik написал(а):
Гм.. интересно..

UPD
а если в самом приложении путь до mdb2 поменять?

Спустя 4 минуты, 50 секунд (10.04.2011 - 03:18) Vitas1983 написал(а):
Доступ к консоли нарыл... Теперь куда ставить pear?
Сайт www.blickfeld.ru
вот этот адский сайт. Могу предоставить доступы к FTP если интересно покопаться. Я уже три дня рою там все...

Спустя 3 минуты, 22 секунды (10.04.2011 - 03:21) Vitas1983 написал(а):
хотя нет... Доступа к консоли нарыть не удалось... Надо техподдержку просить..

Спустя 1 минута, 3 секунды (10.04.2011 - 03:22) kirik написал(а):
Vitas1983
Попробуйте в консольке написать:
pear install MDB2-2.5.0b3

не уверен что сработает..


Цитата (Vitas1983 @ 9.04.2011 - 20:21)
Доступа к консоли нарыть не удалось...

Ок

Спустя 6 минут, 27 секунд (10.04.2011 - 03:29) Vitas1983 написал(а):
написал доступ в личку...

Спустя 6 минут, 22 секунды (10.04.2011 - 03:35) Vitas1983 написал(а):
доступы уже отправил в личку

Спустя 9 минут, 23 секунды (10.04.2011 - 03:45) kirik написал(а):
Решение проблемы - заливка нового MDB2 (версии MDB2-2.5.0b3) на место старого (файл MDB2.php не забываем). Соответсвенно нужно скопировать все отличные файлы (драйвера БД, итд) из папки со старым MDB2 в папку с новым.
И вроде всё
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.