2016-06-27 21 views
2

私はUbuntu 14.04の仮想マシン内でnginx 1.4.6およびphp 5.5上でWebサーバーを実行していますので、ZeroMQ拡張機能をインストールする必要があります。私は(UNIXライクなシステムに構築するにはセクションZMQ上の指示に従っている、PHPの私のバージョンに対してそれをコンパイルし、指示hereのような結合PHP言語を追加して/etc/php5/cli/php.iniにラインクラスZMQContextが見つかりません

extension=zmq.so 

を追加しました私にとって唯一の.iniファイルである/etc/php5/fpm/php.iniにもなります。次nginxphp-fpmphp -iショー再起動した後

$ php -i | grep -i zmq 
zmq 
ZMQ extension => enabled 
ZMQ extension version => @[email protected] 
libzmq version => 4.0.4 

をそうZMQモジュールがCLIにインストールされているが、私はphpinfo();でページを訪問したときに、私はZMQモジュールの構成セクションを参照してくださいしていません私はエラーメッセージを取得、コード$context = new \ZMQContext();が呼び出されたページにアクセス:

クラスのZMQContext「'は見つかりません

ZMQモジュールは明らかにcli内に正しく読み込まれていますが、何らかの理由でphp-fpmで認識されません。私は、fpm php.iniがロードされており、拡張子が付いている行があることを二重チェックしました。

私もラチェットとループ内の別々のWebSocketサーバーを実行し、加入者にプッシュする着信メッセージをリッスンするスクリプトpush-server.phpいる:php push-server.phpを実行した後、それはZMQモジュールので、エラーなしで

<?php 
require dirname(__DIR__) . '/vendor/autoload.php'; 
require dirname(__DIR__) . '/app/libs/Pusher/Pusher.php'; 

$loop = React\EventLoop\Factory::create(); 
$pusher = new App\Libs\Pusher\Pusher; // my own pusher implementation 

$context = new React\ZMQ\Context($loop); 
$pull = $context->getSocket(ZMQ::SOCKET_PULL); 
$pull->bind('tcp://127.0.0.1:5555'); 
$pull->on('message', [$pusher, 'onMessageEntry']); 
$pull->on('subscribe', [$pusher, 'onSubscribe']); 

$webSock = new React\Socket\Server($loop); 
$webSock->listen(8099, '0.0.0.0'); 
$webServer = new Ratchet\Server\IoServer(
    new Ratchet\Http\HttpServer(
     new Ratchet\WebSocket\WsServer(
      new Ratchet\Wamp\WampServer(
       $pusher 
      ) 
     ) 
    ), 
    $webSock 
); 

$loop->run(); 

を実行しますcliに正しくロードされています。

私は既に試したものはhereですが、運はありません。同様の質問hereがありますが、ウィンドウとワンプサーバーに集中しています。

これはどうして起こっているのでしょうか?それは非常に高く評価されます。

+1

同じ問題がまだ解決しない... –

+0

これはうまくいきませんが、私が使っているコード(これはうまくいきます)は次のようになります: '$ context = new \ React \ ZMQ \ Context $ループ); '。したがって、名前空間にはバックスラッシュがあります。また、あなたは、モジュールがcliではなく、fpmではないと言っています...正しいiniをfpmに使用していて、モジュールをロードできますか?また、 'phpinfo()'のスクリプトが実行されたときにエラーや警告がないことを確認してください。 – Johannes

+0

名前空間に先行するバックスラッシュを追加しても、 'push-server.php'がうまく起動しません。これはphp cliで呼び出されるため、問題は私のページの' $ context = new \ ZMQContext ); 'php fpmにはzmqがロードされていません。 'phpinfo()'を呼び出すときにエラーはなく、zmqモジュールはモジュールのリストにないだけです。私はPHPを5.6にアップグレードしようとしましたが、それでも同じです。 –

答えて

1

PHPを5.6にアップグレードした後に問題がなくなり、すべてのモジュールが問題なくロードされます。

+1

私はPHP 7.0、まだ同じエラーがあります。 –

関連する問題