Не удается загрузить расширение mongo.so после обновления PHP до 5.3 - PullRequest
6 голосов
/ 08 ноября 2011

У меня был PHP 5.2 с MongoDB, установленной на Debian Lenny x64, и все было хорошо.

После обновления PHP до 5.3 (dotdeb) я не могу заставить работать MongoDB, я всегда получаю ошибку

Fatal error: Class 'Mongo' not found (...)

Все остальное работает нормально, все модули по умолчанию работают.

Мой php.ini:

extension_dir = "/usr/lib/php5/20090626"
extension=mongo.so

Mongo.so находится в том же месте, как написано выше. Но когда я запускаю php -m в консоли для проверки загруженных модулей, "mongo" там не отображается.

Я не могу использовать dl('mongo.so') для загрузки модуля во время выполнения, потому что эта функция устарела в PHP 5.3.

Может быть, мне стоит как-то перекомпилировать Монго, я просто не знаю, как это сделать, потому что я не очень хорош в * nix командах.

Спасибо за вашу помощь!

UPDATE Также может быть стоит сказать, что до того, как мой mongo.so был в /usr/lib/php5/20060613, и я вручную скопировал его в "/usr/lib/php5/20090626", потому что кажется, что после обновления моего PHP все модули находятся там.

Ответы [ 3 ]

6 голосов
/ 08 ноября 2011

Модуль расширения API изменился между php5.2 и php5.3. Когда php пытается загрузить модуль расширения, обе стороны должны «представить» магический ключ API, который идентифицирует версию API. Если эти цифры не совпадают, модуль не загружается / не активируется.

Попробуйте sudo pecl install mongo еще раз, чтобы получить модуль расширения, соответствующий вашей новой версии php.

2 голосов
/ 15 июля 2013

Попробуйте переустановить службу mongo & restart

sudo pecl uninstall mongo 
sudo pecl install mongo
sudo service apache2 restart

Это установит Mongo в более новую версию

0 голосов
/ 18 июня 2015

Я потратил немного времени, пытаясь это исправить, я полагаю, у вас была предыдущая установка Монго. То, как я это исправил, было:

Я установил php5-dev:

sudo apt-get install php5-dev
cd /etc/php5/apache2/conf.d/
sudo rm -rf mongo.ini

Затем я просмотрел свой php.ini и удалил extension=mongo.so

Тогда:

sudo pecl uninstall mongo 
sudo pecl install mongo
sudo service apache2 restart 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...