2016-08-23 18 views
2

私はPHPを使用してのNoSQLデータベースをCouchbaseのインストール、私はphp -mコマンドで以下のようなerorrを得た:Couchbaseの拡張子は、エラー

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/couchbase.so' - /usr/lib/php/20131226/couchbase.so: undefined symbol: _zend_hash_str_update in Unknown on line 0 

答えて

3

たちはこっちに同じ問題を抱えていました。ストーリーとその修正方法は次のとおりです。

私たちのマシンでは、PHP 5.6を稼働させようとしていて、couchbase用のPHP拡張モジュールをコンパイルしたかったのです。同じマシンにPHP 7.1とPHP 7.0をインストールしました。 PECLは、extension_dirで定義されたパスの中になかった/usr/lib/php/20151012/couchbase.soにコンパイルしたファイルを入れました。PHP 5.6でロードするために絶対に設定しなければならなかったので、あなたと同様のエラーが発生しました。 20151012というフォルダの名前はPHP APIのバージョンを表し、通常は各PHPのバージョンによって異なります。とにかく後のPHPバージョンを使用していないので、PHP 7.1と7.0を削除してもう一度やり直しました。今度はPHP 5.6に対して正しくコンパイルし、soファイルを/usr/lib/php/20131226/couchbase.soに保存しました。

かいつまん:

拡張子をコンパイル、PECLは/usr/lib/php/20131226のようなフォルダに格納します。最後のfolder-nameは、この拡張がコンパイルされるPHP APIを表します。お使いのバージョンをphp -i | grep 'PHP API'に電話して確認し、一致するかどうか確認してください。

あなたもインストールされている複数のPHPのバージョンを持っているし、それらを維持したい場合は、この答えは役に立つかもしれません:pecl installs for previous php version

役立つ先端

PHPがすべての接頭辞であるextension_dirという変数を持っています相対パスを使用してロードされた拡張機能へのパス。ファイル名を設定するだけでモジュールをロードすると(PHPに接頭辞を追加させる)、これらの問題は起こってはいけません。 zend_extensionとしてロードされた拡張機能の絶対パスを使用する必要があることに注意してください。 xdebug ...