我已经将php5.6升级到php7,但zeromq扩展带来了很多问题。在哪里可以下载php7的正确zmq.so文件?没有一个官方网站提供php7的有效版本(我使用的是apache2.4)
我遵循了以下教程:如何安装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);"
使用php5.6时,不会出现此错误。如何解决此问题?
编辑
我在这篇文章中发现ZeroMQ目前"无法使用"php7:ZeroMQ安装。有什么变通办法吗?
有一个测试版可以通过PECL安装,我一直在使用它,没有任何问题。
sudo apt-get install php-pear
pecl install zmq-beta
如果你在安装过程中遇到错误,那么你很可能会丢失一些依赖项
sudo apt-get install php7.0-dev libzmq-dev pkg-config
对于MacOS,您可以用brew
替换apt-get
,它也应该可以工作。
更新时间:2017年8月17日
在Ubuntu/Debian的新版本中,您现在可以进行
sudo apt-get install php-zmq
与前面的方法相比,这是推荐的,因为它使用了底层ZeroMQ库的较新版本,并负责为您启用扩展。
我刚刚发布了在Debian或Ubuntu 16.04上使用php7安装zmq和php-zmq的所有步骤:在Debian和Ubuntu 上安装zmq和php-zmq
我在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
这种意愿应该奏效。
可以验证ZQLIB版本:
phpX.Y-sp -i | grep zmq
现在有一个新的PHP 7版本:https://pecl.php.net/package/zmq/1.1.3