【问题标题】:PHP 7 curl not being loadedPHP 7 curl 未加载
【发布时间】:2017-07-18 02:33:16
【问题描述】:

我已经在我的本地计算机上安装了 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 上。

【问题讨论】:

  • 确保你已经重启了你的 apache2 服务器
  • “空白”的意思是,“它正在加载,但无法显示”或“它抛出错误但在 php.ini 中未激活错误日志记录”等......

标签: php windows apache curl php-7.1


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    很难猜出它为什么没有运行,而且我看到你没有收到错误 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
    

    【讨论】:

    • 您好给我这个错误:“PHP 警告:PHP 启动:无法加载动态库 'C:\PHP\ext\php_curl.dll”
    • 这是:extension_dir = "C:\PHP\ext"
    • 你能检查httpd.conf文件吗,我猜mod_ssl.so没有安装,请检查我更新的答案
    • 是的,我已经启用,它是评论,我删除评论:LoadModule ssl_module modules/mod_ssl.so
    【解决方案3】:

    我一直在寻找解决方案,直到我决定阅读 PHP 文档站点上的一些 cmets: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

    【讨论】:

    • 对我来说,这三个和 nghttp2.dll 也是如此。干杯(也给@nick-proto)
    • 我不明白为什么第三方捆绑包如此受欢迎,但您显然总是需要为简单的功能做这样的变通方法。在官方 PHP 二进制文件中,curl 总是开箱即用:-?
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      如果你将 ssl VERIFYPEER 设置为 false 就可以了

      curl_setopt($get, CURLOPT_SSL_VERIFYPEER, false);
      

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

      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/

      【讨论】:

        猜你喜欢
        • 2016-10-09
        • 2011-12-06
        • 2014-05-27
        • 2013-02-06
        • 2016-03-14
        • 2017-01-05
        • 1970-01-01
        • 2012-02-23
        • 2012-04-18
        相关资源
        最近更新 更多