64 位 Windows 上的 Apache SSL(不是有效的 Win32 应用程序)

Syn*_*ech 6 windows ssl 32bit-64bit apache-2.2

我创建了一个可移植的(相对路径)Apache 安装。它在我的 32 位系统上完美运行,但是当我尝试在 64 位系统上运行它时,它给出了以下错误:

>httpd -t
httpd: Syntax error on line … of …/httpd.conf: Cannot load …/modules/mod_ssl.so into server: %1 is not a valid Win32 application.
Run Code Online (Sandbox Code Playgroud)

如果我注释掉包含 的行SSL.conf,则服务器在 64 位系统上运行,但当然没有 SSL 支持。

我试过搜索这个,但找不到任何有用的东西。有谁知道如何让 Apache 在 64 位系统上使用 SSL(最好以与 32 位系统兼容的方式)?

Syn*_*ech 10

使用Process Monitor,我观察了 Apache 在加载时进行的文件和注册表项访问。

我注意到在跟踪结束时httpd加载文件libeay32.dll(就在它出错之前)。我尝试将我从 ApacheLounge 获得libeay32.dll64 位 Apache 包的副本放入 Apache 的bin目录中,但它仍然给出了相同的错误。(我想这应该不足为奇,因为它之前加载的文件已经是某个文件夹中的 64 位副本,该文件夹位于PATH安装了笔记本电脑的 64 位驱动程序之一的文件夹中。)

然后我放了一个32 位libeay32.dll( ssleay32.dll)副本,我从标准包中得到,等等!Apache 在 64 位系统上运行时支持 SSL!而且,因为副本libeay32.dll是32位的,所以它仍然可以在32位系统上运行而无需修改(即没有检测系统和替换文件甚至是conf-file hacks)!

(我很高兴我将错误消息放在问题的标题中,因为它有望帮助其他人解决这个问题 - 我已经挣扎了几个月 - 到这个页面,他们最终可以找到解决方案。?)

  • wamp 上 mod_ssl 和 php 5.6 的相同问题通过从 php 7.0.4 包复制文件 libeay32.dll 和 ssleay32.dll 来解决。 (3认同)
  • 我将 `libesy` 和 `ssleay` 从 `php7` 文件夹复制到 apache/bin,这解决了我的问题。 (2认同)