PHP 用の amqp 拡張機能のアセンブル

WBOY
リリース: 2016-06-13 13:23:34
オリジナル
845 人が閲覧しました

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 が必要です。のバージョン 使用しているブローカー。次の手順を使用してライブラリをダウンロードしてインストールします。


# 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

拡張機能は C で書かれています。C と RabbitMQ 間の通信は通常、rabbitmq-c ライブラリ (つまり librabbitmq) に依存するため、拡張機能をコンパイルする前に依存ライブラリをインストールする必要があります。はい、必要に応じてインストールしてください~

元の記事では hg ツールを使用していますが、これには mercurial (軽量バージョン管理システム) のインストールが必要です。ここでは従来の方法を使用します。

まず、ここから Rabbitmq-c の v0.2 バージョンをダウンロードします: https://github.com/alanxz/rabbitmq-c/tags または直接シェル:

wget https://github.com/alanxz/rabbitmq-c/tarball/0.2

tar zxvf 0.2

cd alanxz-rabbitmq*

(なぜバージョン 0.2 なのか? うーん、わかりません。要するに、バージョン間の互換性が非常に悪いのです。試行と失敗を繰り返した結果、バージョン 0.2 はかなりスムーズであることがわかりました - -)

次に、codegen アクセサリの最新バージョンをここからダウンロードします: https://github.com/rabbitmq/rabbitmq-codegen/downloads、または直接シェル:

wget https://github.com/rabbitmq/rabbitmq-codegen/tarball/master

tar zxvf マスター

mv Rabbitmq-* codegen

(上記の手順では、解凍して、rabbitmq-c ディレクトリ内の 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 をクソ! ! !





関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート