pecl install mongo-不断使用错误的模块API进行编译


9

在此处使用Nginx和php5-fpm与Ubuntu 12.04

我的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-并于20090626 /创建了新的mongo.so文件。

我对这一切还是有点陌生​​,所以希望这是一个容易解决的盲目错误!我只需要让mongo重新启动并运行即可。

Answers:


12

我的猜测是:

  • pecl install mongo实际上是在安装一个预构建的二进制文件(这确实很愚蠢,但并不奇怪)。要么
  • 您仍然可以php5-dev从5.3安装中获得旧软件包,并且pecl正在寻找和使用它而不是5.4版本。查看与PHP相关的软件包列表(dpkg -l '*php*'),查看是否还有5.3个软件包,然后进行升级。

我只是在回答我自己的问题!谢谢!
kavisiegel

那是哪一个呢?
womble

2
我必须更新php5-dev,卸载mongo然后重新安装。
kavisiegel

最适合我的方式
奥利弗·贝叶斯·谢尔顿

2

伟大的思想家都这么想,在我弄清楚发生了什么之后,womble发表了片刻。他的答案是正确的,并且在我的回答之前,所以这是我将接受的答案,但是为了将来参考,解决方案是:

apt-get update
apt-get install php5-dev
pecl uninstall mongo
pecl install mongo
/etc/init.d/php5-fpm restart

当然,mongo.so已经以pecl不会删除的方式存在于php.ini中,因此使升级变得稍微容易一些。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.