pecl install mongo - continue de compiler avec une mauvaise API de module

9

Travailler avec Ubuntu 12.04 ici, nginx et php5-fpm

J'ai eu Mongo qui fonctionnait bien sur php 5.3, puis j'ai ajouté le ondrej / php5 ppa et mis à jour vers php5.4. Il a conservé les extensions GD et CURL, mais pas mongo. J'ai rajouté la ligne au fichier php.ini, et rien. Ensuite, j'ai activé les erreurs de démarrage et obtenu ceci:

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

Donc, je suppose que j'ai fait find -name 'mongo.so'et déplacé le fichier de 20090626 / à 20100525 / ..., ce qui a entraîné cette erreur:

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

J'ai ensuite fait pecl uninstall mongoet pecl install mongo- qui a créé le nouveau fichier mongo.so dès 20090626 /

Je suis un peu nouveau pour tout cela, donc j'espère que c'est une erreur aveugle facile à corriger! J'ai juste besoin de remettre Mongo en marche.

kavisiegel
la source

Réponses:

12

Ma conjecture serait soit:

  • pecl install mongoinstalle en fait un binaire pré-construit (ce qui serait vraiment stupide, mais ne serait pas aussi surprenant); ou
  • Vous avez toujours l'ancien php5-devpaquet de votre installation 5.3 et vous le pecltrouvez et l'utilisez à la place de la version 5.4. Jetez un œil à votre liste de packages PHP ( dpkg -l '*php*') et voyez s'il reste des packages 5.3, et mettez-les à niveau.
womble
la source
Je répondais juste à ma propre question avec ça! Merci!
kavisiegel
Alors lequel était-ce?
womble
2
J'ai dû mettre à jour php5-dev, désinstaller mongo puis réinstaller.
kavisiegel
qui a parfaitement fonctionné pour moi
Oliver Bayes-Shelton
2

Les grands esprits pensent de la même façon, les moments postés après avoir compris ce qui se passe. Sa réponse est correcte et avant la mienne, c'est donc ce que j'accepterai comme réponse, mais pour référence future, la solution était la suivante:

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

Et bien sûr, mongo.so était déjà dans le php.ini d'une manière que pecl ne l'a pas supprimé, ce qui a rendu la mise à niveau un peu plus facile.

kavisiegel
la source