Php5

pecl install mongo - 使用錯誤的模組 API 不斷編譯

  • July 12, 2012

在這裡使用 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 就發布了。他的答案是正確的,在我之前,所以這是我接受的答案,但為了將來參考,解決方案是這樣的:

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 沒有刪除它,所以升級稍微容易一些。

引用自:https://serverfault.com/questions/407014