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.
相关文章