3

我已经在我的本地计算机上安装了 apache 2.4 和 PHP 7.1。我在我的 php.ini (extension=php_curl.dll) 中启用了 curl,但由于某种原因,即使在启用它之后 curl 也没有被加载,我做了一个 phhinfo 来检查,什么也没有,我还做了一个小脚本:

function isExtensionLoaded($extension_name){
    return extension_loaded($extension_name);
}

echo isExtensionLoaded('curl');

什么都没有,是空白的,这意味着没有被加载,是不是缺少了什么?我在 Windows 10 上。

4

5 回答 5

9

在我的情况下,当我还将 nghttp2.dll 复制到 Apache bin 目录时它起作用了

于 2017-09-13T19:37:52.103 回答
7

我一直在寻找解决方案,直到我决定阅读 PHP 文档站点上的一些评论:http: //php.net/manual/de/curl.installation.php

我修复了从 php 文件夹中处理以下列表文件(在我的情况下为 C:\xampp\php7)

libeay32.dll
libssh2.dll
ssleay32.dll

有些人还必须移动nghttp2.dll才能正常工作。

到您的 apache/bin 文件夹(在我的情况下为 C:\xampp\apache\bin)。

我还将这些文件复制到 C:\Windows\System32,但我认为没有加载任何这些文件。

编辑:我成功地从 system32 文件夹中删除了这些 dll,之后能够运行 curl

于 2017-05-23T14:57:39.750 回答
1

如果您将 ssl 设置VERIFYPEERfalse

curl_setopt($get, CURLOPT_SSL_VERIFYPEER, false);

它会正常工作。您还可以通过从https://curl.haxx.se/docs/caextract.html下载 cacert.pem 并将证书添加到您的 php.ini 文件来使 curl 与 ssl 一起工作

curl.cainfo="C:\path\cacert.pem" 
openssl.cafile="C:\path\cacert.pem"

curl_setopt($get, CURLOPT_SSL_VERIFYPEER, true);

也可以这样工作,您可以防止中间人攻击,请查看此链接了解更多详细信息http://thisinterestsme.com/php-curl-ssl-certificate-error/

于 2019-01-19T02:42:59.913 回答
0

很难猜出它为什么没有运行,而且我看到你没有收到错误 atm。

你应该得到错误,但我很确定你没有在你的 php.ini 中设置错误日志

首先,我们需要激活日志记录以查看您的扩展程序运行不正确的原因:

请在您的 php.ini 文件中更改/添加以下行:

display_startup_errors = On
error_log = 'c:/php-logs/php-error.log'

现在创建php-logs目录和php-log.log文件

mkdir c:/php-logs
copy NUL c:/php-logs/php-error.log

现在重新启动服务器。现在你应该得到错误并请分享错误代码以便我可以提供帮助

更新:

在 `httpd.conf` 中启用 mod_ssl

LoadModule ssl_module c:\apache-2.2\modules\mod_ssl.so
于 2017-02-27T13:21:50.983 回答
0

确保您编辑了正确的文件。CLI、Apache2 和其他 SAPI 应该有单独的文件。完成后,重新启动 Apache2 服务器。

于 2017-02-27T13:09:05.007 回答