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

Posted

技术标签:

【中文标题】在 Windows 10 和 PHP7 上将 ZeroMQ PHP 扩展添加到 XAMPP【英文标题】:Adding the ZeroMQ PHP extension to XAMPP on Windows 10 and PHP7 【发布时间】:2017-04-10 19:23:27 【问题描述】:

我在将 ZeroMQ php 扩展添加到 XAMPP 时遇到问题。

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

我已经采取的步骤:

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

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

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

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

    通过控制面板重启 XAMPP。

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 解决了我的问题。

【问题讨论】:

请在答案部分写下答案.. 但我很高兴你把它整理出来。 【参考方案1】:

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

第 1 步

从this site下载x86 dll文件

第 2 步

复制php_zmq.dllC:\xampp\php\ext

第 3 步

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

第 4 步

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

第 5 步

重启apache

【讨论】:

是的,虽然我也是,但我知道您还必须为 libzmq.dll 添加 Loadfile ... 语句 我在 apache 中使用 Loadfile 崩溃 可能路径错误? 如果它对你有用,那没关系,但如果文件和路径正确,它应该不会有任何问题。参见 Apache 的LoadFile 指令httpd.apache.org/docs/2.2/mod/mod_so.html#loadfile @mostafaznv 如何在 Mac 上的 xampp 中安装?【参考方案2】:

我知道这是一个老问题,尽管我花了 2 天时间试图让 ZeroMQ 正确加载。如果在遵循所有基本说明后仍然无法使用它,我还有 2 个步骤可供您研究。

让它在 php 7.3.12, Win10 x64 上工作

第一。 确保编辑所有 php.ini 文件。

如果您使用 wamp 服务器,Apache 将拥有自己的 php.ini,当您单击 windows 右下角的 wamp 图标并转到 php->php.ini 时会打开它。然后在D:\xampp7\php\php.ini 下手动添加相同的extension=php_zmq.dll 以及您的php.ini。老实说,我不是 100% 确定这是必要的,但将它包括在两者上都不会受到伤害。

第二。 在 libzmq.dll 上运行 depister.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 之类的命令来将所需的库版本导入到您的项目中而不会出错!

【讨论】:

这似乎只适用于php7,我已经安装了8个,我真的不重新安装任何东西..你有什么建议吗?

以上是关于在 Windows 10 和 PHP7 上将 ZeroMQ PHP 扩展添加到 XAMPP的主要内容,如果未能解决你的问题,请参考以下文章

PHP 7.2.9 在随机时间内存不足

如何在 Windows 10 上将代理配置到 GitBash 环境中

如何在 Windows 10 上将 Xdebug 3 连接到 PhpStorm?

如何在 Windows 10 上将 Quazip 与 Qt 5.6、Qt Creator 一起使用?

在 Windows 上将 Tensorflow 与 Anaconda 和 PyCharm 一起使用

如何在Windows 10上将代理配置到GitBash环境中