在此处使用 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
- 它在 20090626/ 中创建了新的 mongo.so 文件
我对这一切有点陌生所以希望这是一个容易修复的盲目错误!我只需要让 mongo 恢复运行。
我的猜测是:
pecl install mongo
实际上是在安装一个预构建的二进制文件(这真的很愚蠢,但不会那么令人惊讶);或者php5-dev
5.3 安装的旧包,并且pecl
正在查找和使用它而不是 5.4 版本。查看您的 PHP 相关包列表 (dpkg -l '*php*'
),看看是否还有 5.3 包剩余,并升级它们。伟大的思想是相似的,在我弄清楚发生了什么之后,womble 发布了片刻。他的回答是正确的,在我之前是正确的,所以我会接受这个答案,但为了将来参考,解决方案是这样的:
当然,mongo.so 已经在 php.ini 中,pecl 没有删除它,因此升级起来稍微容易一些。