在我的 apache error.log 中,我有以下行:PHP 警告:PHP 启动:无法加载动态库“ext\php_curl.dll”- 找不到指定的过程。\r\n 位于未知的第 0 行
但是我已经检查了我的 PATH 变量并且列出了 PHP 目录,ext 文件夹设置正确并且文件夹中存在 php_curl.dll。
我已经重新安装了 vc++ redistributes 以确保那里没有问题。
在检查过程中,我发现在运行中打开它们时,以下所有 ddl 都存在(为了测试是否可以从 PATH 变量中找到它们):
- WS2_32.dll
- 动态链接库
- php7ts.dll
- 库文件
- 库
- nghttp2.dll
- ssleay32.dll
- 规范化
- 内核32库
- 虚拟运行库140
- api-ms-win-crt-stdio-l1-1-0.dll
- api-ms-win-crt-字符串-l1-1-0.dll
- api-ms-win-crt-堆-l1-1-0.dll
- api-ms-win-crt-转换-l1-1-0.dll
- api-ms-win-crt-文件系统-l1-1-0.dll
- API-MS-WIN-CRT-运行时-l1-1-0.dll
- api-ms-win-crt-实用程序-l1-1-0.dll
- api-ms-win-crt-时间-l1-1-0.dll
- API-MS-WIN-CRT-环境-L1-1-0.dll
我不确定 php_curl 可能有哪些依赖项,如果您能提供任何建议,我将不胜感激。
更多系统信息:编译器 MSVC14 (Visual C++ 2015)
架构 x64
Windows 7 平台
PHP 版本 7.1.4
Apache 版本 2.4
答案1
我遇到了同样的问题,但只有在通过 Apache 运行 PHP 时才会出现。在 CLI 中一切正常 - cURL 显示在 中phpinfo()
。
解决方案是替换 Apachebin
目录中的几个文件:
- 库文件
- ssleay32.dll
- 库
- nghttp2.dll
当 PHP 通过 Apache 运行时,其bin
目录可能优先于系统%PATH%
变量,因此 PHP 的 curl 扩展使用来自 Apache 的库,导致版本不匹配(Apache 的库似乎比要求的旧)。
还应该注意,这种行为(据我所知)是从 PHP 7.1 开始的。
答案2
完成上述 dll 复制后,请确保您的 php.ini 中包含以下行,并且 perm 文件也在那里。不要忘记输入您的路径。
[curl] curl.cainfo = “C:\php\extras\ssl\cacert.pem”
[openssl] openssl.cafile = “C:\php\extras\ssl\cacert.pem” openssl.capath="C:\php\extras\ssl\cacert.pem"