在Windows 10中启用cURL

4

我已在我的笔记本电脑(Windows 10 Home Single Language 64位版本1803)上设置了本地服务器。

我按照这个教程下载并手动安装了apache24php7MySQLphpMyAdminwordpress

我正在尝试启用cURL,因此在php.ini文件中进行了更改。

;extension=curl

extension=curl

我已经重新启动了Apache服务器。之后,我在localhost/curl_enable.php上运行以下代码以检查cURL是否已启用。

<?php
 echo 'Curl: ', function_exists('curl_version') ? 'Enabled' . "\xA" : 'Disabled' . "\xA";
 ?>

但它仍然显示。
Curl: Disabled

那么我是否错过了任何步骤。如何在我的系统中启用cURL?

2个回答

4

以下是在Windows上启用curl的步骤:

...
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "C:\PathToMyPhp\ext"

...

extension=php_curl.dll

...

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = C:\PathToMyFile\cacert.pem

1 - 确保您的extension_dir指向php扩展目录。

2 - 取消注释或添加扩展名.dll名称。

这是php扩展的惯例正确语法:php_nameOfTheExtension.dll

.dll文件放置在php的扩展目录中,或者在第三方下载的情况下,必须将其放置在此处。

3 - cacert.pem是可选的,用于SSL事务。

在此处下载:https://curl.haxx.se/docs/caextract.html

4 - 使用phpinfo()检查curl是否在列表中,并检查配置。

5 - 在错误时,请检查Apache的error.log和access.log。

编辑1:

6-我忘记了:将您的php目录路径添加到Windows环境PATH变量中以获取.dll依赖项。

问题/回应在此处:Enable CURL on Windows For PHP5.6.4

编辑2:

以下是文件的路径,取决于MySQL安装和版本

C:\Program Files\MySQL\MySQL Server 8.0\bin\libeay32.dll

C:\Program Files\MySQL\MySQL Server 8.0\bin\ssleay32.dll

取决于您的php目录

C:\php7\libssh2.dll

编辑3:

扩展配置示例,使用正确语法(来自PHP5,但也适用于PHP7):

; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download (PHP 5+).
; Be sure to appropriately set the extension_dir directive.
;
;extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
;extension=php_ftp.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_odbc.dll
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll

;extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
extension=php_xsl.dll

zend_extension="C:\php-7.1.22\ext\php_opcache.dll"
zend_extension="C:\php-7.1.22\ext\php_xdebug-2.6.1-7.1-vc14-x86_64.dll"

希望这能有所帮助。

这是我的扩展路径:C:\apache\php\ext,其中包含一个文件php_curl.dll。但正如我在问题中提到的那样,我已经下载了php7,并且在php.ini文件中只包含exension=curl。我已经将路径添加到Windows环境中,没有生成任何错误,但是唯一的问题是curl被禁用了。 - Aniruddh
好的,我看到问题了。这是Windows交付文件php.ini的完全错误。自从几年前开始,我每个PHP安装都使用相同的.ini,并且从未见过所有扩展现在都像这样写“exension=curl”,而不是像这样写“exension=php_curl.dll”。所以我不知道它是否像这样工作,但显然不是。通过“extention=name”覆盖您的“extension=php_curl.php”,所有扩展都必须正常工作。我使用它已经有几年了,对于我来说,PHP5 / PHP7所有版本都很好。我还编辑了我的帖子以找到3个外部所需的dll。 - Shim-Sao
抱歉,“extension=php_curl.dll” :) - Shim-Sao
谢谢,将libssh2.dll添加到路径后它可以工作了。感谢您的帮助。 - Aniruddh

0

我在使用wamp 3.1.9和php 7.3.7时遇到了同样的问题。

解决方法是将ext文件夹中的php_curl.dll替换为之前PHP 7.3.1版本的文件。


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