不能得到狗.所以扩展加载后更新PHP到5.3


Can't get mongo.so extension to load after updating PHP to 5.3

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

更新PHP到5.3 (dotdeb)后,我不能让MongoDB工作,我总是得到一个错误

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

其他一切正常,所有默认模块都在工作。

我的php . ini中:

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

Mongo。所以和上面写的位置是一样的。但是当我在控制台中运行php -m来检查加载的模块时,"mongo"没有列出。

我不能在运行时使用dl('mongo.so')来加载模块,因为这个函数在PHP 5.3中被弃用了。

也许我应该重新编译mongo,我只是不知道怎么做,因为我不太擅长*nix命令。

谢谢你的帮助!

也许在我走狗之前说这句话是值得的。所以是在/usr/lib/php5/20060613,我手动复制到"/usr/lib/php5/20090626",因为似乎更新我的PHP后,所有模块都位于那里。

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

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

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

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

这将安装mongo到新版本

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

我安装了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