在这里使用Ubuntu 12.04,nginx和php5-fpm
我有mongo在php 5.3上运行良好,然后我添加了ondrej / php5 ppa并更新到php5.4。 它保持GD和CURL扩展,但不是mongo。 我重新将该行添加到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 – 它创build了新的mongo.so文件在20090626 /
我有点新,所以希望这是一个盲目的简单的错误来解决! 我只需要让mongo恢复运行。
我的猜测是:
pecl install mongo实际上是安装一个预先构build的二进制文件(这实在是愚蠢的,但不会令人惊讶); 要么 php5-dev软件包, pecl正在寻找并使用它,而不是5.4版本。 看看你的PHP相关软件包列表( dpkg -l '*php*' ),看看有没有剩下的5.3软件包,然后升级它们。 伟大的思想家们都有同样的想法,在我想清楚发生了什么事情之后,womble贴出了一些消息。 他的回答是正确的,在我之前,所以我会接受这个答案,但为了将来的参考,解决办法是这样的:
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没有删除它,所以升级稍微容易一些。