2016-01-05 14 views
5

Bene, ecco una strana situazione che ho trovato. Ho usato PHP e MongoDB insieme su un progetto e aggiornato il software associato. Dopo l'aggiornamento, ho fatto assicuratevi di aggiornare i nuovi file conf e tutto va bene --- tranne quando si tenta di utilizzare la classe MongoClient, ottengo il seguente errore fatale:Dopo l'aggiornamento di PHP alla versione 7, perché non posso usare il driver mongodb?

Fatal error: Uncaught Error: Class 'MongoClient' not found in /srv/http/test.php

Quindi il mio primo istinto è stato per controllare il mio /etc/php/php.ini per assicurarmi che mongodb.so fosse correttamente incluso. L'ho trovato dopo gli altri extension linee:

extension=mcrypt.so 
extension=zip.so 
extension=mongodb.so ; <--- here it is 

Con questo controllato, ho caricato un phpinfo() sceneggiatura rapido per verificare che stavo usando il file giusto php.ini, e confermato che sono. E non solo, anche il driver mongodb sembra essere caricato correttamente!

Loaded Configuration File  /etc/php/php.ini 
. . . 
mongodb support    enabled 
mongodb      version  1.1.1 
mongodb      stability stable 
libmongoc      version  1.3.1-dev 
libbson      version  1.3.0 

Quindi ho riavviato httpd e ho provato di nuovo. Nessun dado, non è ancora possibile trovare la classe MongoClient. Così ho provato a installarlo da pecl invece del gestore pacchetti della mia distribuzione, e la situazione è la stessa descritta sopra.


Quindi, ecco un breve riassunto della situazione:

  • kernel Linux 4.3.3
  • PHP versione 7.0.1
  • versione php-1.1.1 mongodb
  • Sembra configurato correttamente e mongodb è abilitato e visualizzato in phpinfo().
  • Provato a installare il driver mongodb tramite pecl e il gestore pacchetti della mia distro.

Altre informazioni che possono essere utili:

  • MongoDB versione 3.2.0
  • mongod è in esecuzione
  • provato anche il riavvio, nessun cambiamento.

risposta

5

Bene, ho trovato la risposta.

La classe è stata modificata. Non è più \MongoClient, ed è ora \MongoDB\Driver\Manager

Tutto ciò di cui ho bisogno è un refactoring. Il nuovo driver è progettato per essere un driver di livello inferiore per le funzionalità di alto livello da riempire con le librerie userspace, quindi chiunque altro esegua l'aggiornamento a php7, assicurati di controllare che ti sentirai a tuo agio con il nuovo driver, o che lo spazio utente le librerie esistono quando lo fai. Speriamo che questa domanda/risposta aiuti gli altri in futuro.

Commenter ianaz seguito ha pubblicato questa buona biblioteca spazio utente per MongoDB: http://mongodb.github.io/mongo-php-library/

+1

sono coloro serio ?! qui una libreria userspace: http://mongodb.github.io/mongo-php-library/. Grazie :) – ianaz

+0

@ianaz buona chiamata, dovrei aggiungere questo alla risposta. – dotVezz

Problemi correlati