web-dev-qa-db-ja.com

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を起動して実行するだけです。

9
kavisiegel

私の推測は次のいずれかでしょう:

  • pecl install mongoは、ビルド済みのバイナリを実際にインストールしています(これは実際にはばかげていますが、それほど驚くことではありません)。または
  • まだ古いphp5-dev 5.3インストールのパッケージはそのままで、peclは5.4バージョンの代わりにそれを見つけて使用しています。 PHP関連のパッケージリスト(dpkg -l '*php*')5.3パッケージが残っているかどうかを確認し、アップグレードします。
12
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にすでに存在していたため、アップグレードが少し簡単になりました。

2
kavisiegel