Curl 扩展不适用于 php 7、Windows 7 和 Apache 2.4

Curl 扩展不适用于 php 7、Windows 7 和 Apache 2.4

我最近升级到了 php 7.1.31,从安装 EasyPhp (Windows 7, x86) 开始。安装文件并配置 php.ini 文件后,一切运行正常,除了 curl 扩展存在问题:

**Fatal error: Uncaught Error: Call to undefined function curl_init()**

phpinfo() 确认缺少 curl 扩展。

经过多次验证和测试:

  • 这不是 php.ini 中取消注释扩展的问题(“;extension=php_curl.dll” 已正确取消注释)。
  • libeay32.dll、ssleay32.dll、libssh2.dll 位于 /php 目录根目录的正确目录中(我也尝试将其放在 /system32 文件夹中,尽管这是一个坏主意,但效果并不好)
  • php_curl.dll 位于 /ext/ 目录中
  • Windows 事件查看器中未发现相关错误或日志
  • Windows PATH var 包含 /php 目录
  • extension_dir 路径在 php.ini 文件中设置正确(所有其他扩展均正常运行)
  • 我尝试了 ssleay32.dll、ssleay32.dll 和 libssh2.dll 的各种版本,因为我认为其中一个可能被损坏,但什么也没有改变。

也许是一个提示:我已经使用 DOS php 命令行实用程序检查了已知扩展的列表:

php -r "print_r(get_loaded_extensions())";

它返回 41 个扩展的列表包括curl 和 openssl!但是,在 php 页面(Apache 2.4)中执行相同的命令:

echo "<pre>", print_r(get_loaded_extensions()), "</pre>";

返回 39 个扩展的列表,curl 和 openssl 是丢失的

底层 php.ini 文件与 php CLI 和使用 php/apache 运行的网页所使用的文件相同...

另外一点,https://www.php.net/manual/en/curl.installation.php请参阅 libcrypto-.dll 但 libcrypto-.dll 不在 php 的默认下载文件夹中(为什么?)。我测试了 libcrypto-.dll,但没有成功

任何想法都将不胜感激!

答案1

我在启动 PHP 7.3 时遇到了类似的问题。

之前(至少在 7.2.3 上),设置extension_dir = "ext"工作正常。但在 7.3.14 或 7.4.2 上,这不起作用。我必须像这样完全设置路径:

extension_dir = "C:\Program Files\Webserver\bin\PHP\7.4.2\ext"

我通过阅读 apache 错误日志找到了问题

相关内容