我在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