【问题标题】:Enable cURL on PHP7 windows10 64 bit Apache 2.4在 PHP 7 windows 10 64 位 Apache 2.4 上启用 cURL
【发布时间】:2017-06-08 19:47:48
【问题描述】:

我正在使用 Windows10 64位 阿帕奇 2.4.25 (Win64) PHP 7.1.0-Win32-VC14-x64

当我尝试调用 curl_init() 函数时,我收到一条错误消息“调用未定义函数 curl_init()” 尝试关注

  • 将 ssleay32.dll & libeay32.dll & php7ts.dll 复制到 apache/bin 文件夹中
  • 正确设置路径以包含上述文件“C:/PHP;”

非常感谢任何帮助。

【问题讨论】:

  • 我正在尝试解决同样的问题。您是否在事件查看器 -> Windows 日志 -> 应用程序中看到一条消息“无法加载动态库 '{php ext path}\php_curl.dll'”?
  • 尝试将 php 文件夹中的 libssh2 也复制到 apache/bin 文件夹中,这对我现在有效。
  • 将 libssh2 文件从 php7 文件夹复制到 apache/bin,没有成功。除了 libssh2 复制之外,您是否更改了其他任何内容?
  • 自从我开始获取最新版本的 php.ini 以来,我确实发生了很大变化。所以我记得的所有步骤都是:1)下载php 7.1 2)将php文件夹添加到PATH 3)使用扩展目录的绝对路径更新ini文件和未注释的php_curl.dll和php_openssl.dll扩展4)更新httpd。 conf 加载 php7apache2_4.dll 模块到 php 文件夹并将 PHPIniDir 设置为 php 目录 5) 将 libeay32.dll libssh2.dll 和 ssleay32.dll 复制到 apache/bin (替换现有) 6) 重新启动 apache。
  • 如果最后一条评论不起作用,请尝试查看事件查看器 -> Windows 日志 -> 应用程序中的错误,然后查看消息内容。

标签: curl 64-bit windows-10 php-7 apache2.4


【解决方案1】:

以下是从获取 PHP 到启用 cURL 的步骤:

  1. 下载PHP(这些步骤已在 7.1 中测试过)
  2. 将 PHP 文件夹添加到 PATH 环境变量中
  3. 使用扩展目录的绝对路径更新 php.ini 文件并取消注释 php_curl.dll 和 php_openssl.dll 扩展
  4. 更新 httpd.conf(Apache 配置文件)以加载 PHP 文件夹中的 php7apache2_4.dll 模块并将 PHPIniDir 设置为 PHP 目录
  5. 将 libeay32.dll libssh2.dll 和 ssleay32.dll 复制到 apache/bin(替换现有)
  6. 重新启动 Apache。

【讨论】:

  • 谢谢先生!我花了 3 天的时间试图让它发挥作用。我会与指南合作并安装 VC14 redist。它会工作一段时间,然后恢复到扩展不会加载的位置。我担心我永远不会让它工作,但是复制 DLL 就可以了。这是过去 10 多年里我第一次在 Windows 上遇到 Apache/PHP 这个问题,我不得不这样做。很奇怪。
  • 刚刚在 Apache 2.4.29 和 PHP 7.2.0(均为 x64)中遇到了这个问题。我安装的 PHP(直接来自 windows.php.net)没有你列出的一堆文件。我将 libssh2.dll 复制到我的 Apache bin/ 并且它有效。救生员。
  • PHP 7.2.2 Windows 10 Apache 2.4 在寻找 cURL 库不加载原因的答案一段时间后,我只是将 libssh2.dll 从 \php 复制到 \Apache24\bin 并且一切都开始了工作得很好
  • 救命!我将 libssh2.dll 复制到了我的 Apache bin/ 中,它工作了
  • 值得注意的是,一些 php 7 版本没有显示 *.dll 的扩展名,例如它只是 extension=curl 而不是 php.ini 文件上的 extension=curl.dll。因此在取消注释扩展时要小心
【解决方案2】:

我通过以下方式修复它:

1)编辑 php.ini 文件 Enable(uncomment) php_curl.dll 和 php_openssl.dll 扩展

2) 转到 c:/php7/

将 libssh2.dll 复制到 c:/apache24/bin 文件夹中。

3) 测试:curl_test.php

<?php

// Script to test if the CURL extension is installed on this server

 // Define function to test
    function _is_curl_installed() {
if  (in_array  ('curl', get_loaded_extensions())) {
    return true;
}
else {
    return false;
}
}

// Ouput text to user based on test
 if (_is_curl_installed()) {
    echo "cURL is <span style=\"color:blue\">installed</span> on this server";
  } else {
  echo "cURL is NOT <span style=\"color:red\">installed</span> on this server";
}
?>

【讨论】:

  • 将 libssh2.dll 复制到 apache/bin 文件夹在我的情况下有助于加载“curl”扩展,但它对 LDAP 扩展没有帮助。 :( 我猜这取决于不同的库
  • 这是我的设置中唯一缺少的:“将 libssh2.dll 复制到 c:/apache24/bin 文件夹中”,花了我 2 小时!谢谢楼主!
【解决方案3】:

在 PHP 7.2.2 Windows 10 Apache 2.4 中搜索为什么 cURL 库不加载的答案一段时间后,我只是将 libssh2.dll 从 \php 复制到 \Apache24\bin 并且一切都开始正常工作

【讨论】:

  • 为我工作。在 PHP 7.2 之后,似乎没有提供 libleay32.dll 和 ssleay32.dll,所以我一直在寻找其他修复程序来测试这是否是 PATH 问题或损坏的东西。
  • 对于 php 7.2.18,我还需要复制 libcrypto-1_1.dll 和 libssl-1_1.dll。这对 php 7.3 的工作方式相同(即使使用 php 7.2 中的 dll :)。
  • 我已经安装了 Git v2.2.7,并且我找到了安装 Git 的 libssh2-1.dll 的副本。我将此文件复制到 \Apache24\bin 并将其重命名为 libssh2.dll。重启 Apache 服务后,phpinfo() 报告 curl 支持已启用。这适用于 Windows 10 上的 php 7.4.25。(DLL 位于:C:\Program Files\Git\mingw64\bin)
【解决方案4】:

这对我有用...

环境信息

  • WAMP 服务器版本 3.1.9
  • Apache 2.4.39
  • PHP 7.2.18

第 1 步

从 PHP 下载中,我得到了 VC15 x64 线程安全 (2019-May-01 10:48:48) https://windows.php.net/download#php-7.2

第 2 步

解压压缩文件并将/ext/php_curl.dll复制到C:\wamp64\bin\php\php7.2.18\ext目录(通过覆盖)

第 3 步

重启所有服务

完成

【讨论】:

    【解决方案5】:

    这救了我的命(来自https://www.php.net/manual/en/curl.installation.php

    在 Apache 2.4 32bit 版本 Windows 7 x64 上升级到 php 7.1.6

    这个 curl 实现有效:

    1. C:/(php 文件夹路径)/php.ini enable extension=php_curl.dll

    libeay32.dll、ssleay32.dll、libssh2.dll直接在php7文件夹中找到

    1. 将此添加到 Apache/conf/httpd.conf

      加载 curl 并打开 ssl 库 LoadFile "C:/(php 文件夹路径)/libeay32.dll" LoadFile "C:/(php 文件夹路径)/ssleay32.dll"

    LoadFile "C:/(php 文件夹路径)/libssh2.dll"

    如果您没有找到其中一些 DLL,请尝试下载非 TS 版本的 php 并从该文件夹中复制它们。

    【讨论】:

      【解决方案6】:

      我在 Acquia 的开发桌面上遇到了同样的问题,将 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 从 PHP7.3 文件夹复制到 Apache/bin 文件夹为我解决了这个问题。

      “从 1.1.0 版开始,OpenSSL 确实改变了它们的库名称! libeay32.dll 现在是 libcrypto-.dll(例如 libcrypto-1_1-x64.dll 用于 64 位窗口上的 OpenSSL 1.1.x) ssleay32.dll 现在是 libssl-.dll(例如 libssl-1_1-x64.dll 用于 64 位窗口上的 OpenSSL 1.1.x)"

      • epos_jk

      https://www.php.net/manual/en/curl.installation.php#121921

      【讨论】:

        猜你喜欢
        • 2012-10-25
        • 2019-06-19
        • 2011-01-07
        • 2013-11-10
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 2013-02-06
        相关资源
        最近更新 更多