2009-10-07 27 views
9

Utilizzo pacchetti pera in php da anni. Sono in procinto di aggiornare/spostare un sito che utilizza il pacchetto pera MDB2 e non è stato aggiornato per PHP 5.3.X.Sostituzione per PEAR: MDB2 su PHP 5.3

In 5.3, MDB2 restituisce quei nuovi fastidiosi errori.

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

So che posso cambiare il mio errore impostazioni di segnalazione per sbarazzarsi di loro, ma preferisco non fare alcuna eccezione. Ad ogni modo, qualcun altro usa MDB2 in questi giorni e ha una soluzione? Esistono pacchetti di database simili consigliati?

risposta

9

avrei sicuramente andare per un ORM, almeno se si sta lavorando su un grande progetto, per il quale non si desidera utilizzare mysqli_* o funzioni/metodi PDO direttamente - Doctrine è il più sviluppato/utilizzato, al giorno d'oggi (è l'ORM predefinito del framework symfony e può essere facilmente integrato in Zend Framework).

Gli errori E_DEPRECATED, tuttavia: PHP 5.3 è piuttosto giovane, e molte librerie/software/progetti non sono ancora stati adattati - probabilmente ne avrete molti nel prossimo paio di mesi :-(

.
+0

Sì, sono d'accordo sull'immaturità di PHP 5.3 e capisco che ci vorrà del tempo per aggiornare il nostro codice, ma non penso che MDB2 verrà mai aggiornato (sembra abbandonato a me). La dottrina sembra fantastica. Grazie. – mattweg

+0

Prego :-) Buon divertimento! –

7

ho intenzione di commentare su questo, dal momento che è venuta in alto nei risultati di ricerca di Google per il problema

ho contattato lo sviluppatore di piombo per MDB2, che ha detto:

si prega di controllare un copia di MDB2 da SVN, è completamente compatibile con PHP5.3, con molti miglioramenti delle prestazioni S. Attualmente sto aspettando alcune correzioni al nuovo driver SQL Server (Microsoft ci sta lavorando proprio questa settimana), quindi spingo una nuova versione stabile.

(Modifica, 4 anni più tardi: Questo non è più giusto, non farlo)

3

ho appena andato e scaricato l'ultima versione di MDB2 (MDB2-2.5.0b3) da qui ed è http://pear.php.net/package/MDB2/download si è sbarazzato di tutti i miei errori Sembra funzionare correttamente con PHP versione 5.3.5

0

Ho aggirato tutti gli errori e gli avvisi deprecati, utilizzando MDB2 e PHP 5.3, ma ho ottenuto alcuni errori davvero strani su MDB2, quindi mi chiedo cosa succede sotto il cofano . Il mio ambiente è CentOS, PHP 5.3, MDB2-2.4.1, MySQL 5.0.77

In qualsiasi momento, utilizzo AutoExecute 2x in un file php, il secondo non funziona (lo stesso vale se provo a utilizzare preparare e quindi eseguire). Ho eseguito l'accesso al mio log di query MySQL e mentre un INSERT riuscito mostra i valori, un INSERT non riuscito avrà sempre solo i segnaposto. cioè: valori (?,?,?,?). E il MDB2_Error sarà sempre parlare Ricorsione

lastInsertID() non ha mai lavorato con le tabelle di MySQL e campi autoincremento (con autista mysqli) ho abbastanza di debug su di esso, andando in profondità nella stack di chiamate, e il risultato ottengo è così avvolto su Oggetti, che non puoi dire di cosa si tratta, fino alla fine. Mi piacerebbe usare MDB2 di più, ma in realtà, ho dovuto tornare su mysql diretto, numerose volte a causa di questi problemi. Forse Lucas o altri sviluppatori potrebbero far luce su questo argomento, o indirizzarci nella giusta direzione.

+1

http://pear.php.net/bugs/bug.php?id=18050 dice che è necessario aggiornare la versione MDB2 dalla 2.4.1 alla 2.5.0b3 – MECU

9

È inoltre possibile effettuare l'aggiornamento alla versione beta 3 tramite la riga di comando

pear upgrade MDB2-beta 
pear upgrade MDB2_Driver_Mysql-beta 

Spiegazione del perché attuale versione stabile non è compatibile con rigorosa segnalazione degli errori: http://pear.php.net/bugs/bug.php?id=9756

Fonte per il comando:
http://pear.php.net/bugs/bug.php?id=18050

+0

Lanciarlo appena fuori - Ho aggiornato a MDB2-beta usando i comandi precedenti e il mio sito hanno iniziato a rompersi senza generare errori. Sto ancora cercando di capire come risolverlo con il cliente in questione che sta andando fuori di testa per il fatto che il sito si sta rompendo. –

+0

Modifica: ok si trattava in realtà di un errore di errore irreversibile in Mail/Queue introdotto di recente. Ho aggiornato i pacchetti di pere mentre ero lì ed è così che ho introdotto il bug. Sembra che la patch non sia ancora arrivata agli aggiornamenti ma è stato abbastanza facile modificare il file da solo. –

0

Se si utilizza MDB2 solo per MySQL, è possibile sostituirlo e mantenere la maggior parte delle funzioni con MDBDid: http://azure-dev.kiao.net/648-mdb2 Avrai solo un piccolo codice da adattare.