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

kav*_*gel 9 php5 pecl php-fpm mongodb

在这里使用 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
Run Code Online (Sandbox Code Playgroud)

所以,疯狂的猜测,我做了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
Run Code Online (Sandbox Code Playgroud)

然后我做了pecl uninstall mongopecl install mongo-这创造了新的mongo.so文件右后卫20090626 /

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

wom*_*ble 12

我的猜测是:

  • pecl install mongo实际上是在安装一个预先构建的二进制文件(这真的很愚蠢,但不会那么令人惊讶);或者
  • 您仍然拥有php5-dev5.3 安装中的旧包,并且pecl正在查找和使用它而不是 5.4 版本。查看与 PHP 相关的软件包列表 ( dpkg -l '*php*'),看看是否还有剩余的 5.3 软件包,然后升级它们。

  • 我不得不更新`php5-dev`,卸载mongo然后重新安装。 (2认同)