pecl install mongo - ciągle się kompiluje z niewłaściwym API modułu

9

Praca z Ubuntu 12.04 tutaj, nginx i php5-fpm

Miałem mongo działające dobrze na php 5.3, potem dodałem ppa ondrej / php5 i zaktualizowałem do php5.4. Zachował rozszerzenia GD i CURL, ale nie mongo. Ponownie dodałem wiersz do pliku php.ini i nic. Następnie włączyłem błędy uruchamiania i otrzymałem to:

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

Więc, zgaduję, zrobiłem find -name 'mongo.so'i przeniosłem plik z 20090626 / na 20100525 / ... co spowodowało ten błąd:

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

Potem zrobiłem pecl uninstall mongoi pecl install mongo- który utworzył nowy plik mongo.so w 20090626 /

Jestem trochę nowy w tym wszystkim, więc mam nadzieję, że jest to ślepy łatwy błąd do naprawienia! Muszę tylko przywrócić mongo do działania.

kavisiegel
źródło

Odpowiedzi:

12

Domyślam się, że albo:

  • pecl install mongoinstaluje gotową wersję pliku binarnego (co byłoby naprawdę głupie, ale nie byłoby prawie tak zaskakujące); lub
  • Nadal masz stary php5-devpakiet z instalacji 5.3 i peclznajdujesz go i używasz zamiast wersji 5.4. Spójrz na listę pakietów powiązanych z PHP ( dpkg -l '*php*') i sprawdź, czy pozostały jakieś pakiety 5.3, i zaktualizuj je.
womble
źródło
Właśnie odpowiadałem na moje własne pytanie! Dzięki!
kavisiegel
Więc który to był?
womble
2
Musiałem zaktualizować php5-dev, odinstalować mongo, a następnie ponownie zainstalować.
kavisiegel
to działało idealnie dla mnie
Oliver Bayes-Shelton
2

Wielkie umysły myślą podobnie, womble opublikował chwile po tym, jak zorientowałem się, co się dzieje. Jego odpowiedź jest prawidłowa i przed moją, więc przyjmuję ją jako odpowiedź, ale w przyszłości można ją rozwiązać:

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

I oczywiście mongo.so był już w php.ini w taki sposób, że pecl go nie usunął, dzięki czemu nieco łatwiej było go uaktualnić.

kavisiegel
źródło