在Windows 10和PHP7上将ZeroMQ PHP扩展添加到XAMPP

时间:2016-11-26 17:37:34

标签: php windows apache xampp zeromq

我在向XAMPP添加ZeroMQ PHP扩展时遇到问题。

设置:Windows 10,PHP7,XAMPP(7.0.9)

我已采取的步骤:

  1. 将PHP(D:\xampp7\php)和PHP扩展(D:\xampp7\php\ext)目录添加到系统变量(PATH)

  2. 按照zeromq.org上的说明操作。我从x86ts下载了pecl repository版本,因为列出的快照链接(http://snapshot.zero.mq/)已关闭。

  3. libzmq.dll复制到PHP目录,将php_zmq.dll复制到PHP扩展目录

  4. 通过添加php.ini更新了D:\xampp7\php\php.iniextension=php_zmq.dll),并检查了扩展目录extension_dir="D:\xampp7\php\ext"

  5. 通过控制面板重新启动XAMPP。

  6. Apache错误日志显示以下内容:

    [Sat Nov 26 18:30:27.461679 2016] [ssl:warn] [pid 15280:tid 588] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
    [Sat Nov 26 18:30:27.546320 2016] [core:warn] [pid 15280:tid 588] AH00098: pid file D:/xampp7/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
    [Sat Nov 26 18:30:27.630955 2016] [ssl:warn] [pid 15280:tid 588] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
    PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\\xampp7\\php\\ext\\php_zmq.dll' - Das angegebene Modul wurde nicht gefunden.\r\n in Unknown on line 0
    [Sat Nov 26 18:30:27.662208 2016] [mpm_winnt:notice] [pid 15280:tid 588] AH00455: Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.9 configured -- resuming normal operations
    [Sat Nov 26 18:30:27.662208 2016] [mpm_winnt:notice] [pid 15280:tid 588] AH00456: Apache Lounge VC14 Server built: Jul  1 2016 11:09:37
    [Sat Nov 26 18:30:27.662208 2016] [core:notice] [pid 15280:tid 588] AH00094: Command line: 'd:\\xampp7\\apache\\bin\\httpd.exe -d D:/xampp7/apache'
    [Sat Nov 26 18:30:27.662208 2016] [mpm_winnt:notice] [pid 15280:tid 588] AH00418: Parent: Created child process 964
    [Sat Nov 26 18:30:28.363210 2016] [ssl:warn] [pid 964:tid 616] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
    

    更新

    看起来无法找到该模块,但如果我添加x64版本,则Apache错误日志表明该模块不是有效的Win32应用程序。

    PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\\xampp7\\php\\ext\\php_zmq.dll' - %1 ist keine zul\xef\xbf\xbdssige Win32-Anwendung.\r\n in Unknown on line 0
    

    解决方案:

    LoadFile "D:/xampp7/php/libzmq.dll"添加到httpd.conf修复了我的问题。

2 个答案:

答案 0 :(得分:5)

这些步骤对我有用(php 7.1.7 - xampp - window 10 x64)

第1步

this site

下载x86 dll文件

第2步

php_zmq.dll复制到C:\xampp\php\ext

第3步

libsodium.dlllibzmq.dll复制到C:\xampp\php

第4步

extension=php_zmq.dll添加到php.ini文件

第5步

重启apache

答案 1 :(得分:0)

我知道这是一个老问题,尽管我花了2天的时间试图让ZeroMQ正确加载。如果按照所有基本说明操作后仍然无法使它正常工作,那么您可以查看另外2个步骤。

在php 7.3.12,Win10 x64下工作

1st。 确保您编辑了所有php.ini文件。

如果使用wamp服务器,则单击Windows右下角的wamp图标并转到php-> php.ini时,Apache将拥有自己的php.ini。然后在其中手动添加相同的extension=php_zmq.dll以及D:\xampp7\php\php.ini下的php.ini。坦白说,我不是100%肯定这是必要的,但是在两个都无法避免的情况下都包括在内。

第二。 在libzmq.dll上运行deplister.exe

这就是它为我工作的原因。从windows.php.net下载的任何php都应具有deplister.exe(它也包含在wamp php版本中)。转到libzmq.dlldeplister.exe所在的Wamp服务器上的php版本库。然后打开cmd并运行以下行:deplister php_zmq.dll这将向您显示php_zmq.dll需要运行的依赖项列表。您可能会注意到,它需要一个非常特定的libzmq.dll版本,因此将dll文件重命名为请求的文件名。然后运行php -m以查看zmq是否显示在模块列表中。如果是这样,您应该能够运行诸如composer update之类的命令,以将所需的库版本正确导入到您的项目中!