Ubuntu 中带有 PHP 7 的 ZeroMQ 无法编译(“错误:函数参数过多")

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

I have upgraded php5.6 to php7, but zeromq extension makes a lot of problems. Where can I download the correct zmq.so file for php7? None of the official sites offer a version for php7 that works (I'm using apache2.4).

我按照以下教程进行操作:如何安装零MQ.

I've followed along the following tutorial: How to install ZeroMQ.

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

The step "Installing ZeroMQ" is working fine, but the second step "Installing the PHP binding" is failing when I execute the command "make" with the following error:

"/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时,不会出现此错误.如何解决这个问题?

When using php 5.6, this error does not appear. How to fix this?

我从这篇文章中发现 ZeroMQ 目前与 php7 不兼容":ZeroMQ 安装.有什么解决办法吗?

I 've found that ZeroMQ is currently "not working" with php7 from this post: ZeroMQ installation. Is there any workaround?

推荐答案

有一个可以通过 PECL 安装的 beta 版本,我一直在使用它,没有任何问题.

There is a beta version available via PECL that you can install, I have been working with it without any issues.

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

如果您在安装过程中遇到错误,那么您很可能缺少一些依赖项

If you get an error during install then you are most likely missing some dependencies

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

对于 MacOS,您可以将 apt-get 替换为 brew,它也应该可以工作.

For MacOS, you can replace apt-get with brew and it should also work.

在较新版本的 Ubuntu/Debian 中,您现在可以这样做

In newer versions of Ubuntu/Debian you can now do

sudo apt-get install php-zmq

与之前的方法相比,推荐使用该方法,因为它使用较新版本的底层 ZeroMQ 库并负责为您启用扩展.

Which is recommended over the previous method because it uses a newer version of the underlying ZeroMQ library and takes care of enabling the extension for you.

相关文章