【问题标题】:Apache 2.4, PHP 7.4.7, Windows 10 can't load cURL Extension from Apache Service but loads fine from Command Line with httpdApache 2.4、PHP 7.4.7、Windows 10 无法从 Apache 服务加载 cURL 扩展,但可以使用 httpd 从命令行正常加载
【发布时间】:2020-12-24 20:26:06
【问题描述】:

我已经解决这个问题 2 天了,似乎无法解决它。 我在我的计算机上安装了 Apache 并作为 localhost 运行。我没有 SSL,但尝试过加载和不加载 openssl 扩展。 如果我从“Windows 服务”启动 Apache 24 服务,PHP 可以工作,但不会加载扩展 dll,特别是我正在尝试加载 cURL。如果我停止“Windows 服务”并从命令提示符运行 httpd,则所有扩展加载都很好。

有趣的是,所有 PHP 功能都可以正常工作,除了从“Windows 服务”运行时的扩展。

当我第一次启动“Apache Windows 服务”时,事件日志显示如下:

php[29280] 
PHP Warning: PHP Startup: Unable to load dynamic library 'php_curl' (tried: ext\php_curl (The specified module could not be found.), ext\php_php_curl.dll (The specified module could not be found.)) (D:\Apache24\bin\httpd.exe -d D:/Apache24) 

我在 phpinfo 中发现的唯一真正线索是我看到的“Windows 服务”和命令行 httpd 之间的区别是:

“Windows 服务”

“命令行 httpd”

我的 php.ini 文件有以下 cURL 设置:

extension_dir = "ext"
extension=curl
extension=openssl

PHP 信息屏幕截图:

两者共有

使用命令行“httpd”

使用 Windows 服务(注意 cURL 缺失且事件日志显示上述错误)

我还注意到“配置文件 (php.ini) 路径”设置为“C:\Windows”,因此我尝试将 php.ini 文件复制到 c:\windows 并复制包含所有 dll 的 ext 文件夹到 C:\Windows 也是如此,但仍然有完全相同的问题。我已经从 C:\Windows 中删除了 php.ini 和 ext 文件夹,以避免将来出现任何路径问题。

有人知道我错过了什么吗?

【问题讨论】:

    标签: php windows apache curl localhost


    【解决方案1】:

    定义扩展目录到完整路径的路径

    extension_dir = "ext"
    

    extension_dir = "c:\PHP7.4.7\ext"
    

    【讨论】:

    • 感谢您的回复 Jean,这是我尝试的第一件事,但症状仍然存在。
    • @LarryRobertson 你能添加你与 PHP 相关的 Apache 配置吗?
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多