如何在Windows上安装cURL?

59

我按照这里的所有说明进行了操作:http://www.tonyspencer.com/2003/10/22/curl-with-php-and-apache-on-windows/

安装和配置Apache,获取PHP5包和CURL包。

我可以运行Apache并运行PHP脚本,没有问题。 但是当我使用curl运行php脚本时,它会失败。

它返回:**Call to undefined function curl_version() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\testing.php on line 5**

其中第5行调用了curl_init()

我输出php -i来查看是否正确设置扩展的路径。它已经被正确设置:

extension_dir => C:\PHP\ext => C:\PHP\ext
cURL support => enabled
cURL Information => libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3

我甚至尝试运行curl_version(),但仍然会出现相同类型的错误。
看起来PHP无法找到CURL扩展,但是php.ini(以及php -i)显示已经设置。

有什么想法? :)

P.S>  System I m running on:
Windows XP
Apache 2.2
PHP 5.2.6
CURL Win32 Generic Binaries: Win32 2000/XP  metalink    7.19.0  binary  SSL enabled     Daniel Stenberg     249 KB

我不理解这个:

Win32 2000/XP   7.19.0  libcurl     SSL enabled     Günter Knauf    1.55 MB
Should I get this one instead?
我需要使用CURL是因为这是项目的要求,所以我只能坚持使用它。XAMPP在Windows中如何工作?你可以推荐一些网站吗?谢谢。
我尝试了很多安装CURL以及检查了一切,但仍然困扰于问题,不知道出了什么问题。
Apache服务器使用了正确的PHP.ini文件,并且该文件中有正确的extension_dir和extension=php_curl.dll设置,但我不知道为什么它不起作用,即使我按照每一步都进行了设置。 :(

4
假设人们在2012年仍然遇到这个问题(就像我一样),我将提供一些更新。Apache(当前版本2.2.21)现在发布了两个不同的版本,这使得启用curl更加容易。你需要的Apache版本是带有SSL支持的那个。安装它,然后像往常一样安装php。在php.ini中,取消注释行";extension=php_curl.dll",如果你还没有这样做,那么你已经准备好了。无需下载其他任何东西。 - Marco Luglio
读者可能会发现这对于 Windows x64 很有用。https://dev59.com/5l8f5IYBdhLWcg3wFvWn - Entree
13个回答

51

使用以下步骤安装curl:

  1. 在浏览器中打开https://curl.haxx.se/dlwiz?type=bin

  2. 在下拉框中选择您的操作系统:Windows/Win32或Win 64。单击“Select!”

  3. 对于Win 32,选择您将在Windows命令提示符(通用)还是Cygwin终端(cygwin)中使用curl。 对于Win 64,选择在Windows命令提示符(通用)或MinGW(MinGW64)中使用curl。 单击“Select!”

  4. 如果需要,请选择您的Windows操作系统。完成。

  5. 单击下载已启用或禁用SSL版本

  6. 打开下载的zip文件。 将文件提取到易于查找的位置,例如C:\ Program Files。

测试curl

  1. 打开Windows命令提示符终端。(从开始菜单中,单击运行,然后键入cmd。)

  2. 设置路径以包括您放置curl.exe的目录。例如,如果您将其放在C:\ Program Files \ curl中,则应键入以下命令: set path =%path;“c:\ Program Files \ curl”

注意:您还可以直接将curl.exe文件复制到路径中的任何现有路径。

  1. 键入curl。 您应该会看到以下消息: curl:尝试“curl-help”或“curl-message”以获取更多信息 这意味着curl已安装且路径正确。

2
最佳答案在我看来应该是一份面向新手的内容,但我不理解“注意事项”的部分。 - samayo
1
@Simon_eQ:第二步说“设置路径以包括您放置curl.exe的目录”。我的意思是,如果您已将其复制到之前在“路径”中定义的现有路径中,则无需使用“set path =%path%;”c:\ Program Files \ curl“来设置目录。希望现在更清楚了。谢谢! - curiousBoy
2
谢谢,这是一个对于刚想使用它而不想与之抗争的初学者来说非常好的答案! - jessicaraygun
1
为什么这个没有被标记为答案?谢谢@curiousBoy。对于一个新手使用cURL的Windows开发人员非常有帮助! - Red2678
对于任何使用 PHP 的 cURL 的人。请将 cURL 文件路径添加到系统变量组中的 Windows 环境路径中。也将 PHP 文件路径添加到 Windows 环境路径中。 - vee
将文件添加到c:\ windows \ system32,您可以忽略有关更改PATH变量的步骤 :) - Ryan Ellis

22

你可能弄错了需要编辑的PHP.ini文件。首先,在info.php中添加PHPinfo();,并从浏览器运行它。

现在在变量列表中写下你看到的PHP ini目录路径!你可能会注意到它与你的PHP-CLI ini文件不同。

启用这个扩展

完成了:-)


1
我曾经遇到过xampp安装程序包的问题。它的目录树结构非常令人困惑。你所需要操作的php文件夹很少是正确的那个。phpinfo()是一个非常好用的故障排除工具。对于这个答案点赞,对于设计xampp树形结构的人(我猜测是罪魁祸首)点踩。 - Josh Smeaton
需要在 Apache 中进行任何配置吗? - Bharanikumar

15

我正在使用XAMPP,其中有几个php.ini文件。

您可以在php.ini文件中找到以下行: ;extension=php_curl.dll

请删除此行开头的;。您可能需要重新启动Apache服务器。


+1 另外还需要在php.ini中启用curl.cainfo。例如,curl.cainfo = "C:\ Apache24 \ curl-7.64.0-win64-mingw \ bin \ curl-ca-bundle.crt" - csr-nontol

9
我也遇到了这个问题。在正确执行这些步骤并修复一些误解之后(没有extensions_dir而是extension_dir,没有sessions.save_path而是session.save_path),仍然无法正常工作。
最后我在php.net上找到了这个注释:
注意:Win32用户请注意: 为了在Windows环境下启用此模块,必须将libeay32.dll和ssleay32.dll放置在您的PATH中。 您不需要来自cURL网站的libcurl.dll。
所以我从/PHP中复制了ssleay32.dll,libeay32.dll和php_curl.dll到Windows/system32,并替换了已经存在的文件(我注意到旧版本的ssleay32.dll和libeay32.dll)。 之后我在php_info()中找到了CURL部分,最终一切都正常工作了。
祝好运!

除非你使用的是2004年或更早的计算机(截至2021年,商业上已经没有理由),否则没有理由使用受限制的RAM 32位操作系统。这个答案是在x64普遍可用八年后发布的。 - John

5

针对其他遇到此问题的人,以下是另一个解决方案:

当您取消注释扩展行时,请将其更改为:

extension=C:/php/ext/php_curl.dll

或者是扩展文件夹的位置,对我来说,直到我这样做之前它才起作用。


这些都对我没用!我在系统 PATH 中同时有 "C:\php" 和 "C:\php\ext",并已取消注释 php.ini 中的适当行,但仍然遇到这个令人恼火的错误! 为什么学习使用 PHP 如此之难?!?!?! 当我尝试安装 OpenSSL 时,我也遇到了类似的 PATH 和 libeay32.dll 问题,最终花费了 3 小时才解决掉,现在又出现了这种麻烦事! - Kenny83

2

我同意Erroid的观点,你必须将PHP目录添加到PATH环境变量中。

PATH=%PATH%;<Your_PHP_Path>

例子

PATH=%PATH%;C:\php

它对我有用。谢谢。


操作系统需要经常刷新,而软件将在这些安装之间继续工作 - 因此正确配置您的 php.ini 文件更有意义。 - John

2
注意:针对Win32用户的提示 为了在Windows环境下启用此模块(cURL),必须在您的PATH中存在libeay32.dll和ssleay32.dll。 您不需要从cURL网站下载libcurl.dll。
此注释解决了我的问题。想分享一下。您可以在php安装文件夹中找到libeay32.dll和ssleay.dll。

2
我最近在Windows Vista上为PHP5安装了Curl。我在最初安装PHP5时没有启用CURL库,因此phpinfo()或php.ini中没有关于Curl的任何内容。
我通过重新运行PHP5安装程序(对于我来说是php-5.2.8-win32-installer.msi)并选择“更改”来安装CURL。然后,我添加了CURL组件。重新启动Apache,CURL就应该可以工作了。 CURL将出现在phpinfo()中。此外,这里有一个示例脚本,您可以运行以验证它是否正常工作。 它显示来自Google的RSS源:
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,
    'http://news.google.com/news?hl=en&topic=t&output=rss');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $contents = curl_exec ($ch);
    echo $contents;
    curl_close ($ch);
    ?>

1

1

我解决了这个问题。

在我的Apache中,我必须指定:

PHPIniDir "C://php" AddType application/x-httpd-php .php

而对于php.ini,我需要使用php.ini_dist来配置它,而不是使用php.ini_recommend。

然后确保PHP引擎已经启动。 现在它可以正常工作了。谢谢大家。


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