pecl install mongo - продолжает компилировать с неверным API модуля

9

Работаем с Ubuntu 12.04 здесь, nginx и php5-fpm

У меня была монго, хорошо работающая на php 5.3, затем я добавил pd ondrej / php5 и обновился до php5.4. Он сохранил расширения GD и CURL, но не монго. Я снова добавил строку в файл 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 /

Я в некотором роде новичок во всем этом, так что, надеюсь, это простая слепая ошибка, которую нужно исправить! Мне просто нужно вернуть Монго в порядок.

kavisiegel
источник

Ответы:

12

Мое предположение будет либо:

  • pecl install mongoфактически устанавливает предварительно собранный бинарный файл (который был бы очень глупым, но не был бы таким удивительным); или
  • У вас все еще есть старый php5-devпакет из вашей установки 5.3, и peclвы находите и используете его вместо версии 5.4. Посмотрите на список пакетов, связанных с PHP ( dpkg -l '*php*'), посмотрите, остались ли еще какие-либо пакеты 5.3, и обновите их.
ombble
источник
Я просто отвечал на свой вопрос с этим! Спасибо!
kavisiegel
Так какой это был?
Уомбл
2
Мне пришлось обновить php5-dev, удалить Монго, а затем переустановить.
kavisiegel
это отлично сработало для меня
Оливер Байес-Шелтон
2

Великие умы думают одинаково, запутанные сообщения опубликованы через несколько мгновений после того, как я понял, что происходит. Его ответ правильный и мой, поэтому я приму его в качестве ответа, но для дальнейшего использования решение было следующим:

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 не удалял его, поэтому его было немного проще обновить.

kavisiegel
источник