PHP8.3(Windows11+Apache2.4.53)无法加载php_curl求助
问题详情
在Apache 2.4.53(win64-VS16)环境下运行PHP8.3(Win32-vs16-x64)时,无法加载php_curl扩展,Apache启动时错误日志如下:
PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\php-8.3.8-Win32-vs16-x64\ext\curl (The specified module could not be found), C:\php\php-8.3.8-Win32-vs16-x64\ext\php_curl.dll (The specified procedure could not be found)) in Unknown on line 0
php.ini相关配置:
extension_dir = "C:\php\php-8.3.8-Win32-vs16-x64\ext" extension=curl [curl] curl.cainfo = "C:/php/php-8.3.8-Win32-vs16-x64/cacert.pem"
已确认C:\php\php-8.3.8-Win32-vs16-x64\ext\php_curl.dll存在,PHP文件夹已加入系统环境变量,目录下有libcrypto-3-x64.dll和libssl-3-x64.dll,此前PHP7.3版本下curl扩展可正常使用。
解决方法
匹配VC++运行库版本
PHP8.3(vs16编译)需使用Visual C++ Redistributable for Visual Studio 2019及以上版本。卸载旧版VC++运行库后,安装对应x64版本,重启系统后重试。复制curl核心依赖到Apache目录
将PHP根目录下的libcurl-x64.dll复制到Apache的bin文件夹(如C:\Apache24\bin),Apache启动时可能无法直接读取PHP目录下的该依赖文件。确认Apache加载的php.ini路径
创建PHP文件写入<?php phpinfo(); ?>,访问后查看Loaded Configuration File项,确认是否为你修改的配置文件。若路径不符,在Apache的httpd.conf中添加指定:PHPIniDir "C:\php\php-8.3.8-Win32-vs16-x64"替换对应版本的curl扩展文件
从PHP官方下载同版本(Win32-vs16-x64)的压缩包,解压后单独提取ext/php_curl.dll和根目录下的libcurl-x64.dll,替换现有文件,避免原文件损坏或版本不匹配。调整环境变量优先级
打开系统环境变量,将PHP根目录移至Path变量的最顶端,确保Apache优先加载当前PHP版本的依赖文件,避免旧版本PHP/curl的dll干扰。
内容的提问来源于stack exchange,提问作者toby1kenobi

