5

ZeroMQ を試してみたいので、service.php と client.php の 2 つの php ファイルを作成します。Linuxターミナルを使用してサービスを実行しますがphp /web/test/service.php、ターミナルは「クライアントが接続するのを待っています...」と出力します。

しかし、chrome エクスプローラーで client.php をリクエストすると、エラーが発生しました。

コマンドphp -mを使用してphp拡張機能を確認すると、zmqすでにそのリストに含まれています。

4

3 に答える 3

7

問題は、ZMQ モジュールが PHP CLI (コマンド ライン インターフェイス) に読み込まれているのに、Apache に読み込まれていないことです。したがって、service.phpコマンド ラインからはスムーズに実行できますがclient.php、Apache は ZMQ をロードしないため、ZMQContext を使用できません。

2 つの異なる.iniファイルがあります。これらはおそらく次のとおりです(ただし、ディストリビューションによっては異なる場合があります)。

  • /etc/php5/apache2/php.iniアパッチ用
  • /etc/php5/cli/php.iniCLI 用

ただし、ディレクトリのすべての.iniファイルは、/etc/php5/conf.d/Apache と CLI の両方にロードされます。

参照: PHP - 外部クラス/ライブラリは apache からアクセスできますが、phpunit からはアクセスできません(問題の正反対)

于 2013-07-27T09:24:29.580 に答える
4

読み込まれている php.ini ファイルを確認する

phpinfonginx経由でリクエストされたときに(おそらくphp-fpm経由で)どのphp.iniファイルがロードされているかを(で)確認すると、cliとは異なるiniファイルがロードされていることがほぼ確実に明らかになります。php-fpm の使用を想定すると、次の ini ファイルが読み込まれる可能性があります。

/etc/php5/fpm/php.ini
/etc/php5/fpm/conf.d/*

zmq.ini ファイルがリストされていません。

php-fpm の zmq をロードしています

zmq を php にインストールするための指示に従い、 zeromqの ini ファイルを作成します (または/etc/php5/cli/conf.d/、明らかに cli 用にロードされているため、そこからファイルをコピーします)。

# /etc/php5/conf.d/zeromq.ini
extension=zmq.so

次にphp-fpmを再起動します

sudo /etc/init.d/php5-fpm restart

また、zeromq を使用できるようにする必要があります。

于 2013-07-27T09:46:41.723 に答える