Apache 2.4、PHP 7.4.7、Windows 10无法从Apache服务加载cURL扩展,但可以通过httpd从命令行加载

cidc1ykv  于 2023-08-07  发布在  Apache
关注(0)|答案(1)|浏览(113)

我已经为这个问题战斗了两天了,似乎无法解决它。我在计算机上安装了Apache,并以本地主机运行。我没有SSL,但尝试过加载和不加载openssl扩展。如果我从“Windows服务”启动Apache 24服务,PHP可以工作,但不会加载扩展dll,特别是我试图加载cURL。如果我停止“Windows服务”并从命令提示符运行httpd,所有扩展都可以正常加载。
有趣的是,除了从“Windows服务”运行时的扩展外,所有PHP功能都运行得很好。
当我第一次启动“Apache Windows Service”时,事件日志显示以下内容:

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缺失,事件日志显示上述错误)



我还注意到“Configuration File(php.ini)Path”被设置为“C:\Windows”,所以我尝试将php.ini文件复制到c:\windows,并将包含所有dll的ext文件夹复制到C:\Windows,但仍然遇到完全相同的问题。我已经从C:\Windows中删除了php.ini和ext文件夹,以避免将来出现任何路径问题。
有人知道我错过了什么吗?

fhg3lkii

fhg3lkii1#

将扩展目录的路径定义为完整路径

extension_dir = "ext"

字符串

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

相关问题