【问题标题】:PHP Startup: Unable to load dynamic library php_curl.dllPHP 启动:无法加载动态库 php_curl.dll
【发布时间】:2015-01-07 13:00:54
【问题描述】:

我无法让 cURL 在我的一台服务器上运行。我有其他人完全像这样设置,他们正在工作。这是系统日志中的错误消息:

PHP Fatal error: Call to undefined function curl_init()

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll' - The specified module could not be found. in Unknown on line 0

我整天都在研究这个,但没有任何效果。这是服务器的当前状态:

  • php.ini 位于 C:\php\
  • php_curl.dll 位于 C:\php\ext\
  • libeay32.dll 和 ssleay32.dll 位于 C:\php\
  • extension=php_curl.dll 在 php.ini 中未注释
  • 环境变量 PATH = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C\php;C:\php\ext;C :\Apache24\bin
  • phpinfo() 显示 C:\php\php.ini 是正在使用的配置文件
  • php.ini extension_dir = "C:\php\ext"
  • Apache 来自here
  • PHP 来自here
  • 操作系统是 Windows Server 2008 R2 数据中心

我已经重启了好几次了。其他扩展正在从扩展目录加载。我还尝试重新下载 PHP zip 文件并将 C:\php 替换为新下载的 zip 文件的内容。不久前,当我更新 PHP 和 Apache 时,我在另一台服务器上遇到了这个问题。用 zip 文件的新副本替换 C:\php 确实可以解决问题,但现在没有帮助。

我很乐意提供您可能需要的任何其他信息。

谢谢。


phpinfo() 配置命令

cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo".

【问题讨论】:

  • phpinfo() 是否显示 curl 已启用?寻找cURL support enabled 你可能需要用 curl 支持重新编译 php ......假设你自己编译,也许发布你的 config.nice / config cmd
  • phpinfo() 仅在模块作者部分下提及 curl。我没有自己编译 PHP。我从 windows.php.net/download 下载了 VC11 x86 Thread Safe 的 zip - 它在过去一直有效。 phpinfo() 在顶部有一个配置命令。我不确定这是否会有所帮助,但我已将其发布在上面。
  • 嗯,一定有什么不同,我会仔细检查你收到的包裹;如果您有过去的服务器之一,请比较 phpinfo()
  • 我尝试将 C:\php 从旧服务器复制到新服务器,但仍然无法正常工作。 phpinfo() 的两个顶部部分(系统、构建日期、编译器、体系结构、配置命令等)在两台服务器之间是相同的。旧的确实显示 curl 已启用。
  • @Mr.Squidward,您的问题的解决方案是什么?

标签: php apache curl


【解决方案1】:

在我的情况下,问题是我正在获取另一个 curl.exe 文件,该文件位于 PATH 中,位于 C:\Windows\System32 中的文件之前

【讨论】:

    【解决方案2】:

    在 PHP 7.4 中:

    这是与Windows 相关的问题,如果您使用Apache2.x + Php,则诀窍在于使用LoadFile 强制加载CURL,如我的Guide 中所述。你不需要奇怪的事情或仪式让CURL在你的机器上工作,你只需要编辑httpd.conf并添加这个:

    # load CURL library on Windows
    LoadFile "${SRVROOT}/php/libssh2.dll"
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      在 PHP 7.3 中:

      1. extension=php_curl
      2. libssh2.dllC:\php复制到C:\apache\bin
      3. libcrypto-*.dlllibssl-*.dllC:\php复制到C:\apache\bin(如果不存在)

      【讨论】:

      • 这应该没有必要。只需确保将 C:\php 添加到系统 PATH 环境变量中即可。
      • @Mr.Squidward 这对我不起作用,仅在 apache 目录中
      • 当我从 PHP 7.3.8 更新到 7.4.0 时,这对我有用跨度>
      【解决方案4】:

      无法加载动态库 'C:\php\ext\php_curl.dll'

      正确答案应该可行,因为缺少 c:\php 的环境路径。所以只需添加

      在控制面板 -> 搜索 -> 高级系统设置并使用按钮环境变量。

      在系统变量下找到路径添加 c:\php 文件夹(或任何路径)并重新启动 Apache。

      【讨论】:

        【解决方案5】:

        我们在环境中也遇到过类似的问题。

        我们卸载了 Apache 并使用以下命令重新安装:

        c:\Apache\bin httpd -k uninstall 
        c:\Apache\bin httpd -k install 
        

        还有魔法……问题解决了……

        【讨论】:

          【解决方案6】:

          你还需要更改 curl.dll 的版本,你必须覆盖 wamp 服务器自带的版本。 C:/wamp/bin/php/ext.

          您可以从此链接下载正确的版本

          http://www.mediafire.com/download/3ay381k3cq59cm2/php_curl-5.4.3-VC9-x64.zip

          我希望它对你有用!

          字体: http://forum.wampserver.com/read.php?2,85716,85932

          【讨论】:

          • cURL 在这里:curl.haxx.se 我不相信 Mediafire 上的包(可能由任何人上传)。
          【解决方案7】:

          糟糕,PATH 中的“C\php”缺少一个冒号。将其更改为“C:\ php”,现在可以使用。我有一种感觉,结果会是这样的……哦,好吧。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-21
            • 2019-04-03
            • 2015-03-01
            • 2021-04-03
            • 2020-03-16
            • 2016-11-27
            • 2021-10-05
            • 2020-02-26
            相关资源
            最近更新 更多