Php5
pecl install mongo - 使用錯誤的模組 API 不斷編譯
在這裡使用 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 沒有刪除它,所以升級稍微容易一些。