ZeroMQ与ubuntu中的php7无法正常工作

时间:2015-12-27 01:28:23

标签: php symfony composer-php ubuntu-14.04 zeromq

我已将php5.6升级到php7,但zeromq扩展会产生很多问题。我在哪里可以下载php7的正确zmq.so文件?所有官方网站都没有提供适用于php7的版本(我使用apache2.4)。

我已经按照以下教程:How to install ZeroMQ

步骤"安装ZeroMQ"工作正常,但第二步"安装PHP绑定"当我执行命令" make"出现以下错误:

"/home/puser/zeromq-4.1.4/php-zmq/zmq.c:2740:2: error: too many arguments to 
function 'zend_register_internal_class_ex' php_zmq_device_exception_sc_entry = 
zend_register_internal_class_ex(&ce_device_exception, php_zmq_exception_sc_entry, 
"ZMQException" TSRMLS_CC)  ^ In file included from /usr/include/php/20151012/main/php.h:40:
0, from /home/puser/zeromq-4.1.4/php-zmq/php_zmq.h:45,from /home/puser/zeromq-4.1.4/php-zmq
/zmq.c:31:/usr/include/php/20151012/Zend/zend_API.h:290:28: note: declared here ZEND_API 
zend_class_entry *zend_register_internal_class_ex(zend_class_entry *class_entry, 
zend_class_entry *parent_ce);"

使用php 5.6时,不会出现此错误。如何解决这个问题?

  

编辑:我发现ZeroMQ目前正在"没有工作"用这篇文章中的php7:ZeroMQ installation。有没有解决方法?

4 个答案:

答案 0 :(得分:10)

PECL提供的测试版可以安装,我一直在使用它而没有任何问题。

sudo apt-get install php-pear
pecl install zmq-beta

如果在安装过程中出现错误,那么很可能会遗漏一些依赖项

sudo apt-get install php7.0-dev libzmq-dev pkg-config

对于MacOS,您可以将apt-get替换为brew,它也应该有效。

2017年8月17日更新

在较新版本的Ubuntu / Debian中,你现在可以做到

sudo apt-get install php-zmq

建议使用以前的方法,因为它使用了较新版本的底层ZeroMQ库,并负责为您启用扩展。

答案 1 :(得分:0)

zmq PHP扩展尚未移植到PHP7。 工作正在进行中:https://github.com/mkoppanen/php-zmq/issues/155

更新:PHP7有一个新版本:https://pecl.php.net/package/zmq/1.1.3

答案 2 :(得分:0)

我刚刚发布了使用php7在Debian或Ubuntu 16.04上安装zmq和php-zmq的所有步骤:Install ZMQ and php-zmq extension on Debian or Ubuntu

答案 3 :(得分:0)

我在php 7.0 / 7.1 / 7.2上建立了一些功能完备的版本 (尚未在php 7.3上起作用)

首先,安装编译器软件包:

apt-get -y install gcc make autoconf pkg-config

之后,取决于您的ubuntu版本。

  • 12.04 / 14.04 / 16.04:

    apt-get -y安装libzmq-dev

  • 18.04或更高版本:

    apt-get -y安装libzmq3-dev

X.Y取决于您的php版本(7.0 / 7.1 / 7.2)

peclX.Y-sp install zmq-beta

在出现提示信息时:

  

请提供libzmq安装的前缀   只需按ENTER

之后:

bash -c "echo extension=zmq.so > /etc/phpX.Y-sp/conf.d/zmq.ini"
service phpX.Y-fpm-sp restart

那应该可以。

可以验证ZMQLIB版本:

phpX.Y-sp -i | grep zmq