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 написал(а):
Спустя 23 часа, 33 минуты, 42 секунды (9.04.2011 - 21:53) Vitas1983 написал(а):
Спасибо!
вроде бы как все понятно и непонятно.
патч представляет собой скрипт в txt формате, и куда его внедрять на серврере понятия не имею.
его я скачал, а также скачал новый каталог MDB2. Ошибка не исчезла. где взять новый каталог pear? Хотя даже его удаление с серврера ошибку не устранило. Она вмонтировалась на сайт. Заказ больше на сайте сделать нельзя. Я стал заложником ситуации. Теперь со своим сайтом на новый хост переходить? Где еще php 5,0 используют что ли. А что будет если следующая версия выйдет? Выбросить свой сайт. Я в шоке... только усложняют жизнь. Из-за одного амперсенда перестало вообще проходить взаимодействие с базой данных.
вроде бы как все понятно и непонятно.
патч представляет собой скрипт в 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 библиотеку, а на файлы движка сайта, то нужно править их.
Написано что баг закрыт в 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 (а не просто залит по фтп), и исправить его может тот кто ставил.
У вас есть доступ к консольке
UPD
рут не нужен, просто консолька..
Спустя 44 минуты, 3 секунды (10.04.2011 - 02:59) Vitas1983 написал(а):
Это уже на хосте править нужно?
к панели управления хостом у меня доступ есть...
К структуре сайта тоже. Но вот путь к MDB2 указывается именно тот, что я и нахожу на сервере. А где настоящий MDB2 это вопрос большой...
к панели управления хостом у меня доступ есть...
К структуре сайта тоже. Но вот путь к 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 поменять?
UPD
а если в самом приложении путь до mdb2 поменять?
Спустя 4 минуты, 50 секунд (10.04.2011 - 03:18) Vitas1983 написал(а):
Доступ к консоли нарыл... Теперь куда ставить pear?
Сайт www.blickfeld.ru
вот этот адский сайт. Могу предоставить доступы к FTP если интересно покопаться. Я уже три дня рою там все...
Сайт 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 в папку с новым.
И вроде всё
И вроде всё