PHP 用の amqp 拡張機能のインストール
これまでで最も面倒な拡張機能のインストールを試したことがあるでしょうか...さまざまなエラーが報告されています。何かありますか? ! ¥#@%%&*……
長い間いじくり回した結果、0.1 の拡張バージョンのみをコンパイルしました。
いいえ、続けてください~一日の大変な努力の後、ついに神は目を開いてくださいました~
----------------------------------------------- --- 私が境界線です -------------------------------------- ------- -----
AMQP - Advanced Message Queuing Protocol。現在最も有名な実装はおそらく有名な RabbitMQ です。
(ご存知ない方は、私の再版「【RabbitMQ+Python入門古典】うさぎとうさぎの巣」を先に読んでください)
もちろん、PHP 拡張機能は公式に推奨されています。 OK、以上です http://php.net/manual/en/book.amqp.php
AMQP PHP 拡張機能をインストールするには、まず ? librabbitmq ライブラリをインストールする必要があります。これには、rabbitmq-codegen バージョンにリンクされたバージョン 0-9-1 が必要です。のバージョン 使用しているブローカー。次の手順を使用してライブラリをダウンロードしてインストールします。
拡張機能は C で書かれています。C と RabbitMQ 間の通信は通常、rabbitmq-c ライブラリ (つまり librabbitmq) に依存するため、拡張機能をコンパイルする前に依存ライブラリをインストールする必要があります。はい、必要に応じてインストールしてください~# Rabbitmq-c ライブラリ @ バージョン 0-9-1 をダウンロードします
hg クローン http://hg.rabbitmq.com/rabbitmq-c/rev/b01825ecc112 Rabbitmq-c
cd Rabbitmq-c
# codegen 要件を追加します。完全なリストを見つけるには、ここにアクセスしてください: http://hg.rabbitmq.com/rabbitmq-codegen/tags
# 適切なブローカー バージョンの URL をコピーします。
hg クローン http://hg.rabbitmq.com/rabbitmq-codegen/rev/16bbcb711380 codegen
# 設定、コンパイル、インストール
autoreconf -i && ./configure && make && sudo make install
元の記事では hg ツールを使用していますが、これには mercurial (軽量バージョン管理システム) のインストールが必要です。ここでは従来の方法を使用します。
まず、ここから Rabbitmq-c の v0.2 バージョンをダウンロードします: https://github.com/alanxz/rabbitmq-c/tags または直接シェル:
(なぜバージョン 0.2 なのか? うーん、わかりません。要するに、バージョン間の互換性が非常に悪いのです。試行と失敗を繰り返した結果、バージョン 0.2 はかなりスムーズであることがわかりました - -)wget https://github.com/alanxz/rabbitmq-c/tarball/0.2
tar zxvf 0.2
cd alanxz-rabbitmq*
次に、codegen アクセサリの最新バージョンをここからダウンロードします: https://github.com/rabbitmq/rabbitmq-codegen/downloads、または直接シェル:
(上記の手順では、解凍して、rabbitmq-c ディレクトリ内の codegen ディレクトリに配置する必要があります。これは、上記の最後の手順で行ったことです。)wget https://github.com/rabbitmq/rabbitmq-codegen/tarball/master
tar zxvf マスター
mv Rabbitmq-* codegen
マニュアルの指示に従って、まず先に進みます:
すべてがうまくいき、エラーが報告されなければ、おめでとうございます!以下は通常の操作です:autoreconf -i
./configure && make && make install
それでもエラーが報告されない場合は、うわー、NB としか言いようがありません。拡張機能のコンパイルを直接実行できます。
しかし、ほとんどの場合、私と同じようにさまざまなエラー メッセージが表示される可能性があるので、それについては後で説明します。ここでコンパイル拡張機能を終了しましょう。
公式ダウンロード (バージョン 1.0.0 をダウンロードしました。新しいバージョンでは何も試す必要はありません。問題ないはずです) http://pecl.php.net/package/amqp に直接アクセスし、コンパイルします。 so ファイルまたはシェル:
wget http://pecl.php.net/get/amqp-1.0.0.tgz
tar zxvf amqp-1.0.0.tgz
cd amqp-1.0.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
作成 && インストール作成
(/usr/local/php/bin/phpize および /usr/local/php/bin/php-config は、実際の php が配置されているディレクトリです。不明な場合は、php がどこにあるかを確認してください。)
前の手順がうまくいった場合は、生成された amqp.so を php.ini に追加して、詳細を説明せずに httpd または php-cgi を再起動するだけで、この手順に問題はありません。
----------------------------------------------- ----私が境界線です----------------------- ------- ----------
あなたが私と同じように惨めで、autoreconf -i からエラーを報告し始めた場合、役立つ可能性のある解決策をいくつか提供します。
autoreconf の実行時に次のエラーが発生する場合があります:
onfigure.ac:60: エラー: 未定義のマクロの可能性があります: AS_CASE
このトークンと他のトークンが正当な場合は、m4_pattern_allow を使用してください。
Autoconf のドキュメントを参照してください。
configure.ac:69: エラー: 未定義のマクロの可能性があります: AS_IF
configure.ac:92: エラー: 未定義のマクロの可能性があります: AC_PATH_PROGS_FEATURE_CHECK
configure.ac:97: エラー: 未定義のマクロの可能性があります: AC_MSG_RESULT
構成:2907: エラー: 未定義のマクロの可能性があります: m4_foreach_w
autoreconf: /usr/bin/autoconf が終了ステータスで失敗しました: 1
奇妙なことに、もう一度実行すると、別のエラーが発生します。 。 。
configure.ac: `./install-sh' のインストール
configure.ac: `./missing' をインストールしています
configure.ac:34: `./config.guess' をインストールしています
configure.ac:34: `./config.sub' のインストール
Makefile.am:3: Libtool ライブラリが使用されていますが、`LIBTOOL' が未定義です
Makefile.am:3:
Makefile.am:3: `LIBTOOL' を定義する通常の方法は、`AC_PROG_LIBTOOL'
を追加することです。Makefile.am:3: `configure.ac' に変更し、`aclocal' と `autoconf' を再度実行します。
Makefile.am: C オブジェクトはサブディレクトリにありますが、`AM_PROG_CC_C_O' は `configure.ac' にありません
Makefile.am: `./compile' のインストール
Makefile.am: `./depcomp' のインストール
autoreconf: automake が終了ステータスで失敗しました: 1
まず、libtool、autoconf、automake などの必要な依存ライブラリがインストールされていることを確認します。
Google からダウンロードし、自分でコンパイルしてインストールすることができます。特に言うことはありません。
yum install libtool autoconf automake
libtoolize がどこにあるかを確認してください:
libtoolize はどこですか
例: libtoolize: /usr/bin/libtoolize が表示され、実行できます
/usr/bin/libtoolize
----------------------------------------------- ----私が境界線です----------------------- ------- ----------
/usr/bin/libtoolize 報告される可能性のあるエラー:
libtoolize: 補助ファイルを `.' に配置します。
libtoolize: ファイル `./ltmain.sh' をリンクしています
libtoolize: `AC_CONFIG_MACRO_DIR([m4])' を configure.ac と
に追加することを検討してください。libtoolize: libtoolize を再実行して、正しい libtool マクロをツリー内に保持します。
libtoolize: Makefile.am の ACLOCAL_AMFLAGS に `-I m4' を追加することを検討してください。
エラーは非常に明確なので、プロンプトに従ってください:
エディタ: configure.ac
行を追加します: AC_CONFIG_MACRO_DIR([m4])
再実行: /usr/bin/libtoolize
編集: Makefile.am
行を追加します: ACLOCAL_AMFLAGS=-I m4
----------------------------------------------- ----私が境界線です----------------------- ------- ----------
./報告される可能性のある構成エラー:
AMQP codegen ディレクトリの場所を確認しています...configure: エラー: AMQP 仕様ファイルが「'/codegen/amqp-0.9.1.json'」に見つかりませんでした
configure ファイルのディレクトリが実際の状況と一致していません。これは手動で修正することによって解決できますが、実際には、rabbitmq-c と codegen の間のバージョンの不一致が原因であると考えられます。バージョン。
simplejson がインストールされた Python の検索を確認しています...configure: エラー: 'simplejson をインポート' できる Python が見つかりませんでした
明らかに、このエラーは、easy_install を通じてインストールできる Python に simplejson パッケージがないことが原因で発生します。
----------------------------------------------- ----私が境界線です----------------------- ------- ----------
さらに多くのエラー レポートがありますが、1 つずつ記録されるわけではありません。つまり、解決策は次のとおりです。「エラー メッセージ」+「Google」です。
ところで: しばらく検索したら気づくと思います: GFW をクソ! ! !