Здесь работает Ubuntu 12.04, nginx и php5-fpm
У меня mongo хорошо работал с php 5.3, затем я добавил ppa ondrej / php5 и обновился до php5.4. Он сохранил расширения GD и CURL, но не mongo. Я повторно добавил строку в файл php.ini, и ничего. Затем я включил ошибки запуска и получил следующее:
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
Итак, дикая догадка, я сделал find -name 'mongo.so'
и переместил файл из 20090626 / в 20100525 / ..., что привело к этой ошибке:
PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
Я тогда сделал pecl uninstall mongo
и pecl install mongo
- который создал новый файл mongo.so еще в 20090626 /
Я новичок во всем этом, поэтому надеюсь, что это слепая ошибка, которую легко исправить! Мне просто нужно, чтобы монго снова заработал.
Я предполагаю, что либо:
pecl install mongo
фактически устанавливает предварительно созданный двоичный файл (что было бы действительно глупо, но не так удивительно); илиphp5-dev
пакет из вашей установки 5.3 сидит без дела, и pecl
находит и использует это вместо версии 5.4. Взгляните на свой список пакетов, связанных с PHP (dpkg -l '*php*'
) и посмотрите, остались ли еще пакеты 5.3, и обновите их.Великие умы думают одинаково, - написал womble через мгновение после того, как я понял, что происходит. Его ответ правильный и раньше моего, поэтому я приму его как ответ, но для справки в будущем решение было следующим:
apt-get update
apt-get install php5-dev
pecl uninstall mongo
pecl install mongo
/etc/init.d/php5-fpm restart
И, конечно же, mongo.so уже был в php.ini таким образом, что pecl не удалил его, что упростило обновление.