我已将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。有没有解决方法?
答案 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
,它也应该有效。
在较新版本的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