在Windows上安装PHP / cURL:“找不到指定的模块”。

30

我在安装了IIS 5的Windows 2000服务器上运行PHP 5.2.3。我正在尝试让cURL生效,所以在我的 php.ini 文件中,我有以下这行:

extension_dir = "F:\PHP\ext"

稍后,我又添加了以下代码:

extension=php_curl.dll

文件 F:\PHP\ext\php_curl.dll 存在,但是当我尝试运行任何PHP脚本时,我会在错误日志中看到以下内容:

PHP警告: PHP启动:无法加载动态库“F:\PHP\ext\php_curl.dll” - 找不到指定的模块。位于未知位置的第0行。

6个回答

35

问题解决了!

虽然错误信息说“找不到指定的模块”,但这有点误导人——它并不是找不到php_curl.dll,而是找不到php_curl.dll所需的一个模块。需要的两个DLL是libeay32.dllSSLeay32.dll

所以,你需要将这2个DLL放在你的PATH中的某个位置(例如C:\Windows\system32)。就是这样。

然而,即使如此,我最初仍然无法解决问题。因此,我下载了最新版本的PHP Windows压缩包,其中包括所有必要的DLL。我没有重新安装PHP,我只是将“ext”文件夹中的所有DLL复制到我的PHP扩展文件夹中(如php.ini中的extension_dir变量所指定的那个),然后将libeay32.dllSSLeay32.dll的版本从PHP下载的内容复制到我的System32目录中。

我还运行了iisreset命令,但我不知道是否有必要。


1
对我来说,必须重新启动IIS! - dwbrito
3
我也需要对libssh2.dll进行相同的操作。 - Gray Fox
感谢@GrayFox,我还需要添加libssh2.dll,只有libeay32.dllssleay32.dll是不行的。 - Mario Werner
2
libeay32.dll and ssleay32.dll have been renamed to libcrypto-*.dll and libssl-*.dll - marco110

15

libeay32.dllssleay32.dll必须对php_curl.dll可访问才能正常工作。

控制面板->搜索->高级系统设置下,使用环境变量按钮。

系统变量下找到Path,添加c:/php文件夹(或其他路径),然后重新启动Apache。


对我有用。但是,我必须重新启动Windows才能使环境变量更改生效。我手动从Apache Lounge安装了Apache,并将其添加为服务。 - zombat
@elQuique 太棒了,谢谢你,这个救了我——在添加环境变量之前,我无法让cURL工作! - Alan A

5
一个技巧是使用WAMP-installer。一切都可以正常工作。不过它不是IIS,所以如果这很重要,你应该忽略我的建议。 ;)
编辑:我看到你找到了解决方案,所以我投了一票。+1

安装XAMPP时,仍需将libeay32.dll和SSLeay32.dll添加到系统路径中。不确定WAMP安装程序是否需要这样做。但这是需要注意的事项。 - Josh Smeaton
应该提到它使用Apache而不仅仅是说“不是IIS”。 - FluorescentGreen5

1
我尝试了上面提到的建议和互联网上的许多其他建议,但仍然遇到同样的问题:
“抱歉,但此插件需要在您的服务器上激活libcurl。”
当我尝试激活我的插件时。
编辑:我使用的是php 5.3.13,有win64 windows 7,但没有任何解决方案适用于我。
1. 我曾尝试将libeay32.dll和SSLeay32.dll复制到windows\system32文件夹中,但并没有起作用 2. 编辑并取消注释了两个php.ini文件,但并没有起作用 3. 在php扩展中激活了php_curl,但并没有起作用 4. 多次复制和替换www.anindya.com版本的php_curl.dll,但似乎我下载的是错误的版本。对我有效的版本在Fixed curl extensions部分的第二个文件php_curl-5.3.13-VC9-x64中。
希望这能帮助其他人。

如果您仍然遇到问题,您可能需要将其作为一个新问题来询问,说明您已经尝试了这个问题的建议,并提供有关您情况的更多细节。例如,您正在使用什么操作系统、Web服务器、插件等等。 - Derek Kurth

1
当我将UwAmp中的php升级到7.2.*时,遇到了这个问题。唯一有效的解决方法是下载当时最新版本的Apache(Apache/2.4.37(Win32)),并替换UwAmp附带的版本。这还涉及编辑示例httpd.conf以生成httpd_uwamp.conf文件。 UwAmp需要此模板才能在启动时生成实际的httpd.conf。很遗憾,上面提供的所有其他建议都没有解决我的问题。另请注意,自OpenSSL 1.1起,不再需要libeay32.dll和ssleay32.dll(请参见http://php.net/manual/en/curl.installation.php)。

这也是我唯一有效的方法。 我不得不更新Apache和PHP(Win32-vs16-x86),并复制/粘贴双方uwamp ini文件,以最终解决此问题。 - Sackey

0
在您的情况下,只需将“F:\PHP\ext”添加到环境变量“path”中即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接