将PHP更新到5.3后无法获取mongo.so扩展

时间:2011-11-08 14:43:45

标签: php mongodb

我在Debian Lenny x64上安装了MongoDB的PHP 5.2,一切都很好。

将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中不推荐使用此函数。

可能是我应该以某种方式重新编译mongo,我只是不知道该怎么做,因为我在* nix命令中不是很好。

感谢您的帮助!

更新 也许值得一提的是,在我的mongo.so进入/usr/lib/php5/20060613之前,我手动将其复制到"/usr/lib/php5/20090626",因为在更新我的PHP之后,似乎所有模块都位于那里。

3 个答案:

答案 0 :(得分:6)

扩展模块api在php5.2和php5.3之间发生了变化。当php尝试加载扩展模块时,双方都必须“呈现”一个识别api版本的api魔术密钥。如果这些数字不匹配,则不会加载/激活模块。

再次尝试sudo pecl install mongo以获得适合您的新php版本的扩展模块。

答案 1 :(得分:2)

尝试重新安装mongo&重启服务

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

这会将mongo安装到较新版本

答案 2 :(得分:0)

我花了一点时间试图解决这个问题,我猜你有一个以前的mongo安装。我修复它的方式是:

我安装了php5-dev:

SELECT IF(LENGTH( columnName ) >5, STR_TO_DATE(columnName, '%h:%i:%s'), STR_TO_DATE(columnName, '%i:%s')) as modDate 
FROM `tableName` WHERE 1 order by modDate desc

然后我查看了我的php.ini并删除了sudo apt-get install php5-dev cd /etc/php5/apache2/conf.d/ sudo rm -rf mongo.ini

然后:

extension=mongo.so