2009-10-07 6 views
9

Я использую пакеты груши в php в течение многих лет. Я в процессе обновления/перемещения сайтов, которые используют пакет груши MDB2, и он не был обновлен для PHP 5.3.X.Замена для PEAR: MDB2 на PHP 5.3

В 5.3 MDB2 возвращает эти новые досадные ошибки.

Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390 

Я знаю, что могу изменить свои настройки отчетов об ошибках, чтобы избавиться от них, но я бы предпочел не делать никаких исключений. В любом случае, кто-нибудь еще использует MDB2 в наши дни и имеет решение? Есть ли похожие пакеты баз данных, которые вы рекомендуете?

ответ

9

Я бы определенно пойти на ОРМ, по крайней мере, если вы работаете над большим проектом, для которого вы не хотите использовать mysqli_* или функции/методы PDO напрямую - Doctrine является наиболее развитым/используемым, в настоящее время (Это ORM ORM Symfony Framework по умолчанию и может быть легко интегрирован в Zend Framework).

О ошибках E_DEPRECATED: PHP 5.3 довольно молодой, и многие библиотеки/программное обеспечение/проекты еще не адаптированы - у вас, вероятно, будет много таких в ближайшие пару месяцев :-(

.
+0

Да, я согласен с незрелостью PHP 5.3, и я понимаю, что для обновления нашего кода потребуется некоторое время, но я не думаю, что MDB2 когда-либо будет обновлен (выглядит оставленным мной). Доктрина прекрасно выглядит. Благодарю. – mattweg

+0

Добро пожаловать :-) Удачи! –

7

Я буду комментировать это, так как она идет высоко в результатах поиска Google для проблемы

Я связался с ведущим разработчиком MDB2, который сказал:

пожалуйста заканчивать копия MDB2 из SVN, она полностью совместима с PHP5.3, при этом многие улучшения производительности s. В настоящее время я жду некоторых исправлений для нового драйвера SQL Server (Microsoft работает над этим на этой неделе), а затем я буду продвигать новую стабильную версию. не

(Edit, 4 года спустя: Это уже не правильно, не делайте этого)

3

Я просто пошел и скачал последнюю версию MDB2 (MDB2-2.5.0b3) отсюда http://pear.php.net/package/MDB2/download и избавился от всех моих ошибок. Кажется хорошо работать с PHP Версия 5.3.5

0

Я обошел все устаревшие ошибки и предупреждения, используя MDB2 и PHP 5.3, , но у меня есть некоторые действительно странные ошибки на MDB2, так что интересно, что под капотом , Мое окружение - CentOS, PHP 5.3, MDB2-2.4.1, MySQL 5.0.77

В любое время я использую autoExecute 2x в php-файле, второй не работает (то же самое происходит, если я пытаюсь использовать prepare и затем выполнить). Я зарегистрировался в журнале запросов MySQL, и, пока успешный INSERT покажет значения, неудачный INSERT всегда будет иметь только заполнители. т.е.: значения (?,?,?,?). И MDB2_Error всегда упомяну RECURSION

lastInsertID() никогда не работали с таблицами MySQL и автоинкрементных полей (с Mysqli водителем) я достаточно отладки на ней, углубляясь в стек вызовов, а результат получить так завернутые в объектах, которые вы не можете сказать, что это такое, до самого конца. Мне бы хотелось использовать MDB2 больше, но на самом деле мне пришлось вернуться к прямому mysql, много раз из-за этих проблем. Возможно, Лукас или другие разработчики могут пролить свет на эту тему или указать нам в правильном направлении.

+1

http://pear.php.net/bugs/bug.php?id=18050 говорит, что вам нужно обновить версию MDB2 с 2.4.1 до 2.5.0b3 – MECU

9

Вы также можете обновить его до версии Beta 3 с помощью командной строки

pear upgrade MDB2-beta 
pear upgrade MDB2_Driver_Mysql-beta 

Объяснение того, почему текущая стабильная версия не соответствует строгой отчетности об ошибке: http://pear.php.net/bugs/bug.php?id=9756

Источник для команды:
http://pear.php.net/bugs/bug.php?id=18050

+0

Просто выбросив ее там - я обновился до MDB2-бета, используя команды выше и мой сайт начали ломаться без ошибок. Все еще пытаясь понять, как исправить это с клиентом, о котором идет речь, в настоящее время волнует о разрыве сайта. –

+0

Редактировать: ok это было фактически из ошибки Fatal Error в Mail/Queue, которая была недавно введена. Я обновил свои пакеты груши, пока я был там, и вот как я представил ошибку. Похоже, патч не дошел до обновлений, но было достаточно легко отредактировать файл. –

0

Если вы используете только MDB2 для MySQL, вы можете заменить его и сохранить большинство функций с помощью MDBDid: http://azure-dev.kiao.net/648-mdb2 У вас будет мало кода для адаптации.

Смежные вопросы