pecl install mongo: continua a compilare con l'API del modulo errata


9

Lavorando con Ubuntu 12.04 qui, nginx e php5-fpm

Ho fatto funzionare bene mongo su php 5.3, quindi ho aggiunto ondrej / php5 ppa e aggiornato a php5.4. Ha mantenuto le estensioni GD e CURL, ma non mongo. Ho aggiunto nuovamente la riga al file php.ini e niente. Quindi ho abilitato gli errori di avvio e ho ottenuto questo:

PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/mongo.so' - /usr/lib/php5/20100525/mongo.so: cannot open shared object file: No such file or directory

Quindi, suppongo, l'ho fatto find -name 'mongo.so'e spostato il file dal 20090626 / a 20100525 / ... che ha provocato questo errore:

PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match

Poi l'ho fatto pecl uninstall mongoe pecl install mongo- che ha creato il nuovo file mongo.so nel 20090626 /

Sono un po 'nuovo in tutto questo, quindi spero che sia un errore cieco facile da risolvere! Devo solo rimettere in moto il mongo.

Risposte:


12

La mia ipotesi sarebbe:

  • pecl install mongosta effettivamente installando un binario pre-costruito (che sarebbe davvero stupido, ma non sarebbe altrettanto sorprendente); o
  • Hai ancora il vecchio php5-devpacchetto dalla tua installazione 5.3 in giro, e lo peclsta trovando e usando al posto della versione 5.4. Dai un'occhiata al tuo elenco di pacchetti relativi a PHP ( dpkg -l '*php*') e vedi se ci sono ancora pacchetti 5.3 e aggiornali.

Stavo solo rispondendo alla mia domanda con questo! Grazie!
kavisiegel,

Quindi quale era?
Womble

2
Ho dovuto aggiornare php5-dev, disinstallare mongo e reinstallare.
kavisiegel,

che ha funzionato perfettamente per me
Oliver Bayes-Shelton il

2

Le grandi menti pensano allo stesso modo, i post pubblicati dopo che ho capito cosa sta succedendo. La sua risposta è corretta e prima della mia, quindi è quella che accetterò come risposta, ma per riferimento futuro, la soluzione era questa:

apt-get update
apt-get install php5-dev
pecl uninstall mongo
pecl install mongo
/etc/init.d/php5-fpm restart

E, naturalmente, mongo.so era già in php.ini in un modo in cui pecl non lo rimuoveva, quindi ha reso leggermente più semplice l'aggiornamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.