Php 未找到类ZMQContext

Php 未找到类ZMQContext,php,zeromq,Php,Zeromq,我在一台带有Ubuntu 14.04的虚拟机上运行nginx 1.4.6和php 5.5上的web服务器,需要安装ZeroMQ扩展。我遵循了上的说明(在类UNIX系统上构建部分),按照说明添加了php语言绑定,根据我的php版本编译了它,并添加了行 extension=zmq.so 到/etc/php5/cli/php.ini以及到/etc/php5/fpm/php.ini,这是我唯一的.ini文件 重新启动nginx和php-fpm后,php-i显示以下内容: $ php -i | grep

我在一台带有Ubuntu 14.04的虚拟机上运行nginx 1.4.6和php 5.5上的web服务器,需要安装ZeroMQ扩展。我遵循了上的说明(在类UNIX系统上构建部分),按照说明添加了php语言绑定,根据我的php版本编译了它,并添加了行

extension=zmq.so
/etc/php5/cli/php.ini
以及到
/etc/php5/fpm/php.ini
,这是我唯一的
.ini
文件

重新启动
nginx
php-fpm
后,
php-i
显示以下内容:

$ php -i | grep -i zmq
zmq
ZMQ extension => enabled
ZMQ extension version => @PACKAGE_VERSION@
libzmq version => 4.0.4
因此ZMQ模块安装在cli中,但是当我访问带有
phpinfo()的页面时
我没有看到ZMQ模块配置部分,当我访问页面时,其中的代码
$context=new\ZMQContext()时,我会收到错误消息:

未找到类“ZMQContext”

ZMQ模块显然已在cli中正确加载,但由于某些原因,它在php fpm中无法识别。我已仔细检查fpm
php.ini
是否已加载,以及是否存在扩展名行

我还有一个脚本
push server.php
,它在带有Ratchet的循环中运行一个单独的websocket服务器,并侦听要推送到订阅者的传入消息:

<?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();

将PHP升级到5.6后,问题消失了,所有模块加载都没有问题。

这里也有同样的问题,仍然没有答案……我不确定这是否对您有帮助,但我正在使用的代码(有效)如下所示:
$context=new\React\ZMQ\context($loop);
。因此名称空间有一个前导反斜杠。另外,您说您在cli中看到了模块,但在fpm中没有看到……您确定您为fpm使用了正确的ini,并且它能够加载模块吗?另外,请确保在使用
phpinfo()加载脚本时没有任何错误/警告
被执行。在名称空间中添加一个前导反斜杠没有帮助,
推送服务器.php
启动良好,因为它是通过php cli调用的,问题在我的页面中,我调用
$context=new\ZMQContext();
并且php fpm没有加载zmq。调用
phpinfo()时没有错误
,zmq模块不在模块列表中。我也尝试过将我的PHP升级到5.6,但还是一样。