PHP启动:无法加载动态库php_curl.dll

5
我在其中一台服务器上无法使cURL工作。我已经按照其他服务器的设置进行了配置,但它们却能正常工作。下面是系统日志中的错误信息:
PHP致命错误:调用未定义的函数curl_init()
PHP警告:PHP启动:无法加载动态库'C:\ php \ ext \ php_curl.dll' - 指定的模块无法找到。位于未知行0
我已经整天在进行研究,但仍然没有解决方案。以下是服务器的当前状态:
  • php.ini位于C:\php\
  • php_curl.dll位于C:\php\ext\
  • libeay32.dll和ssleay32.dll位于C:\php\
  • 在php.ini中取消注释extension=php_curl.dll
  • 环境变量PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C\php;C:\php\ext;C:\Apache24\bin
  • phpinfo()显示C:\php\php.ini是正在使用的配置文件
  • php.ini extension_dir="C:\php\ext"
  • Apache来自here
  • PHP来自here
  • 操作系统为Windows Server 2008 R2 Datacenter
我已经重新启动了几次。其他扩展从扩展目录加载。我还尝试重新下载PHP zip文件并用新下载的zip文件内容替换C:\ php。我在更新PHP和Apache时在另一台服务器上遇到过这个问题。用新的zip文件副本替换C:\ php确实解决了它,但现在没有帮助。
我很乐意提供您可能需要的任何其他信息。
谢谢。

phpinfo() 配置命令

cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"


phpinfo()显示curl已启用吗?查找“cURL support enabled”,您可能需要重新编译带有curl支持的php...假设您自己编译了,也许可以发布您的config.nice / config cmd。 - Joe T
phpinfo() 只在模块作者部分提到了 curl。我没有自己编译 PHP。我从 windows.php.net/download 下载了 VC11 x86 线程安全版的 zip 文件 - 过去它总是能用的。phpinfo() 在顶部有一个配置命令。我不确定那是否有帮助,但我已经将其发布在上面了。 - Mr. Squidward
我尝试将旧服务器上的C:\php复制到新服务器上,但仍然无法正常工作。两台服务器的phpinfo()顶部部分(系统、构建日期、编译器、架构、配置命令等)完全相同。旧服务器确实显示启用了curl。 - Mr. Squidward
1
@Mr.Squidward,你的问题有解决方法了吗? - Boris Garkoun
系统 PATH 环境变量中有一个拼写错误。C:\php 缺少冒号。 - Mr. Squidward
显示剩余2条评论
7个回答

4
在 PHP 7.3 中:
  1. extension=php_curl
  2. libssh2.dllC:\php 复制到 C:\apache\bin
  3. libcrypto-*.dlllibssl-*.dllC:\php 复制到 C:\apache\bin (如果没有这些文件)

1
不必要这样做。只需确保将 C:\php 添加到系统 PATH 环境变量中即可。 - Mr. Squidward
@Mr.Squidward 这对我不起作用,只有在 Apache 目录中才行。 - Misha Shaygu
当我从PHP 7.3.8更新到7.4.0时,这对我起作用了。 设置PATH环境变量对我没有用(尽管它解决了我在intl扩展中遇到的相同问题) - Thomas Baumgartner

3

在 PHP 7.4 中:

如果你使用的是 Apache2.x + Php,那么遇到与 Windows 相关的问题时,解决方法是使用 LoadFile 强制加载 CURL,可以参考我的指南。你不需要进行奇怪的操作或仪式来使 CURL 在你的计算机上工作,只需要编辑 httpd.conf 并添加以下内容即可:

# load CURL library on Windows
LoadFile "${SRVROOT}/php/libssh2.dll"

希望这能帮到你。

1
抱歉,“PATH”中的“C\php”缺少冒号。现已更改为“C:\php”,现在可以正常工作了。我有一种感觉会变成这样...哦,好吧。

1
我们在环境中遇到了类似的问题。
我们使用以下命令卸载了Apache并重新安装了它:
c:\Apache\bin httpd -k uninstall 
c:\Apache\bin httpd -k install 

和魔法一样……问题已经解决了……


0
在我的情况下,问题是我使用的另一个curl.exe文件位于C:\ Windows \ System32中的文件之前,而且该文件在PATH路径中。

0

无法加载动态库'C:\php\ext\php_curl.dll'

正确的答案应该是环境路径c:\php丢失了。所以只需添加

在控制面板->搜索->高级系统设置中使用“环境变量”按钮。

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


-5

另外,您需要更改 curl.dll 版本,必须覆盖 wamp 服务器附带的版本。C:/wamp/bin/php/ext。

您可以从此链接下载正确的版本。

http://www.mediafire.com/download/3ay381k3cq59cm2/php_curl-5.4.3-VC9-x64.zip

我希望它对你有用!

font: http://forum.wampserver.com/read.php?2,85716,85932


cURL在这里:http://curl.haxx.se/ 我不会相信在Mediafire上的软件包(可能是任何人上传的)。 - mins

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