php - 找不到类 ZMQContext

标签 php zeromq

我在装有 Ubuntu 14.04 的虚拟机中的 nginx 1.4.6 和 php 5.5 上运行 Web 服务器,需要安装 ZeroMQ 扩展。我已按照 ZMQ 上的说明进行操作(在类 UNIX 系统上构建 部分),按照说明添加了 php 语言绑定(bind) here ,根据我的 php 版本编译它并添加行

extension=zmq.so

/etc/php5/cli/php.ini 以及/etc/php5/fpm/php.ini,这是我唯一的 .ini 文件。

重新启动 nginxphp-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(); 被调用,我收到错误消息:

Class 'ZMQContext' not found".

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 push-server.php 后,它运行没有错误,因此 ZMQ 模块在 cli 中正确加载。

我已经尝试过建议的东西here ,但没有运气。还有一个类似的问题here , 但专注于 windows 和 wamp 服务器,到目前为止还没有答案。

有人知道为什么会这样吗?我们将不胜感激。

最佳答案

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

关于php - 找不到类 ZMQContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054563/

相关文章:

php - $class->method() 或 $class::method()

php - 通过不同的定界字符序列拆分字符串

javascript - 如果下拉菜单改变,金额也会改变 PHP+JS

c - ZeroMQ C 上的简单 Flatbuffers 示例 - 通过 zmq 将结构复制到 flatbuffer 并再次返回结构

zeromq - ZMQ 是否公开任何内部日志记录?如果是这样,你如何使用它?

php - 如何使用 ZeroMQ 和 ClankBundle 实现 "Push to an Existing Site"?

javascript - AJAX - Javascript 数组到 php

php - 查询以获取结果中的列名称和值?

python - zmq.Context() 在启动几分钟后挂起

node.js - 监听 ZMQ 请求-应答模式中的连接/连接事件