Apache 2.4.23 PHP7.x Windows 10 x64 php_curl 不工作

Posted

技术标签:

【中文标题】Apache 2.4.23 PHP7.x Windows 10 x64 php_curl 不工作【英文标题】:Apache 2.4.23 PHP7.x Windows 10 x64 php_curl not working 【发布时间】:2017-04-27 16:52:03 【问题描述】:

我试图将我的服务器升级到最新的 Apache 2.4.23 和 php 7.1 但它无法加载 php_curl 库,不知道为什么。

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

我尝试了以下方法

    将扩展路径更改为完整路径,例如 d:\webserver\php\ext 复制php_curl.dll, libssh2.dll, libeay32.dll, ssleay32.dllSystem32php/extapache/binphp 添加 php 路径系统变量 PHP7和PHP7.1都试过了 所有这些都是 x64 和所有其他扩展成功加载和服务器工作但只有 php_curl 不工作 php.ini 中未注释的扩展

Apache 2.4.23 x64 PHP7 并尝试过 PHP7.1(线程安全)x64 Windows 10 x64

【问题讨论】:

将php的路径从PATH中取出 dll只需复制到apache\bin文件夹中 不要将 dll 复制到 \windows\system32 文件夹 您是否检查过所有这些扩展都已在您的新php.ini 文件中激活? 你是否将php.ini文件从\php\复制到\apache\bin\ 【参考方案1】:

解决方案:将 libeay32.dll、libssh2.dll、ssleay32.dll 文件放在 httpd.conf 的 ServerRoot 指令中指定的目录下。这些dll可以在php根文件夹下找到编译。

原因:

问题是 php_curl.dll 在加载时需要访问以下库:libeay32.dll、libssh2.dll、ssleay32.dll,如果将它们放在 ./php/ext 目录中或放置 php 扩展名,则没有意义在 php 根目录中。

当然,您可以将它们放在 c:\Windows 或 PATH 中定义的某个全局文件夹中,但如果您不想这样做并且希望您的 apache+php 安装是可移植的:

httpd.conf 中ServerRoot 中指定的路径被视为php 的主路径。该行为类似于您在 ./index.php 中包含 ./path/to/some.php 文件并且 some.php 文件的主路径仍然是 ./ index.php 所在的目录。

简而言之,只需将这三个 dll 放在您在 httpd.conf ServerRoot 指令中指定的目录中,php_curl.dll 将不会再次加载失败。

【讨论】:

是的,我已经阅读了该解决方案并尝试过,但它不起作用。但是我通过从 wamp 复制 php 目录来修复它,似乎这些 dll 文件是错误的,并且 wamp 开发人员似乎自己编译。

以上是关于Apache 2.4.23 PHP7.x Windows 10 x64 php_curl 不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache 2.4.23 在 CentOs Server 中实现 http2 (h2)?

wamp 3.0.6(apache 2.4.23) 403 forbidden 解决办法

编译安装Apache HTTP Server 2.4.23 以及配置HTTP/HTTPS反向代理

安装PHP7.1+apache2.4.23

Centos 编译安装 httpd-2.4.23.tar.gz

环境搭建 之 Windows10 安装 Apache2.4.23