Windows 10 上的 PHP 卷曲,php 5.6.17

Posted

技术标签:

【中文标题】Windows 10 上的 PHP 卷曲,php 5.6.17【英文标题】:Php curl on windows 10, php 5.6.17 【发布时间】:2016-04-27 18:25:30 【问题描述】:

有很多类似的话题,但没有解决我在window 10上的问题(在新电脑上,电脑是完全干净的)。

我在 Windows 10 上使用 php 5.6.17 安装 EasyPhp,干得好! => curl_init() 不起作用

现在我想安装 curl。 首先,在 php.ini 中我取消注释“extension=php_curl.dll”行(这是好的 php.ini,我在 phpinfo() 中看到了路径),然后重新启动 Apache。 => curl_init() 不起作用

我在 Windows/system32 中添加了 libeay32.dll、libssh32.dll 和 ssleay32.dll。 => curl_init() 不起作用

在这一步,卷曲工作在我的 Windows 7 上完成。

我在 Apache/bin 中添加了 libeay32.dll、libssh32.dll 和 ssleay32.dll。 => curl_init() 不起作用

我在 Windows/system32 中添加了 php_curl.dll。 => curl_init() 不起作用

我尝试使用 php_curl.dll 32 和 64。 => curl_init() 不起作用

我安装了软件 OpenSSL(curl 需要 ssl)。 => curl_init() 不起作用

除了“致命错误:调用未定义的函数 curl_init()”外,我没有任何错误消息。 phpinfo() 从不显示 curl 模块。

我的解决方案快用完了,你知道吗?

【问题讨论】:

【参考方案1】:

我发现了一个问题(经过一整天的时间处理这个问题)。 如果你遇到同样的问题,试试这个:

打开命令提示符并转到您的 php 根目录 exec : deplister.exe ext\php_curl.dll 检查依赖关系

对我来说,缺少 libssh32.dll 文件,但它位于 Windows/system32 和 apache/bin 中。为了解决这个问题,我在路径windows中添加php目录,并将文件libssh32.dll复制到php目录中。

Source

【讨论】:

如果我再读到关于 SO(或任何其他网站)的建议,将 PHP 文件夹添加到 PATH 我会尖叫!这行不通!!!至少不是 PHP 7.1.0 和 Windows 10。我也尝试了 OP 所说的一切,但仍然没有! WTF 给 PHP 开发者?!?!我需要降级才能让它工作吗?! C:\php>deplister.exe ext\php_curl.dll php5ts.dll,OK LIBEAY32.dll,OK WS2_32.dll,OK libssh2.dll,OK SSLEAY32.dll,OK WLDAP32.dll,好的 Normaliz.dll,好的 KERNEL32.dll,好的 MSVCR110.dll,好的,这就是我得到的,cURL 仍然无法正常工作。【参考方案2】:

我在这个开发设置中遇到了完全相同的问题:

Windows 10 PHP 5.6.27 Apache 2.2(是的,我知道 v2.4 更新)

在 PHP-CLI 中它可以工作(已加载 php curl ext),但在通过 Apache 运行时则不能(未加载 php curl ext)。

在花了相当长的时间阅读并尝试了不同的解决方案之后,*Jeremy 在“deplister”命令方面对我的帮助最大。

事实证明(对我而言)相同的 dll 文件(如 libeay32.dll 和 ssleay32.dll)存在于各种文件夹(如 php/、apache/bin 和 windows/system32)中。然而,即使命名相同,也有不同的版本,由不同的日期和大小表示。

使 php-curl 神奇地为我工作的是用我在 php/(php 根文件夹)中找到的较新版本替换 apache/bin 中的 libeay32.dll 和 ssleay32.dll,然后重新启动 apache 服务。

所有这些文件夹都存在于系统 PATH 中,但 Apache 显然首先查看它自己的 bin 文件夹。所以,我发现将较新的 dll 复制到 Apache bin 文件夹比依赖系统 PATH 更好。

希望它可以帮助别人。

【讨论】:

【参考方案3】:

除了 kapy47 答案:在我的情况下,我检查了 apache/bin 和 php 目录中的 libssh2.dll,它们是不同的版本。我用 apache/bin 中的较新版本替换,问题解决了

【讨论】:

【参考方案4】:

系统配置: 操作系统:Win 10 64位 服务器:Wamp PHP版本:5.6.40

从 Wamp 中的 php 版本文件夹中复制 libssh2.dll 文件并将其放入 apache/bin 然后重启 apache,现在 curl_init 可以完美运行了!

【讨论】:

以上是关于Windows 10 上的 PHP 卷曲,php 5.6.17的主要内容,如果未能解决你的问题,请参考以下文章

WAMP 卷曲安装

对未定义函数 curl_init() 的卷曲调用

在 xampp、windows 中启用 curl

处理大卷曲响应 - PHP

php 卷曲 - PHP认证

php 卷曲类PHP