EasyPHP切换至PHP 8.1.2时openssl扩展加载失败求助
解决PHP 8.1.2在EasyPHP DevServer中无法加载openssl扩展的方法
针对你遇到的PHP 8.1.2切换后openssl扩展加载失败的问题,以下是几个针对性的排查和解决方向:
1. 检查PHP 8.1根目录的OpenSSL依赖库
PHP 8.1依赖OpenSSL 1.1.x及以上版本的libcrypto-1_1-x86.dll和libssl-1_1-x86.dll,这两个文件必须放在PHP 8.1的根目录(而非ext文件夹):
- 打开
C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\php\php812vs16x86x230327010135目录,确认这两个dll是否存在; - 如果缺失,从PHP官方下载对应版本的线程安全(TS)版PHP包,提取这两个dll到该目录,不要用旧版本PHP的dll替换(版本不兼容)。
2. 临时将PHP 8.1根目录加入系统PATH测试
PHP 8.1对依赖库的加载逻辑较旧版本有变化,即使旧版本无需配置PATH,新版本可能需要:
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量,在系统
PATH中添加C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\php\php812vs16x86x230327010135; - 重启Apache和EasyPHP服务后测试,若警告消失,说明是依赖库路径问题,可改用下面的局部配置方法避免修改全局PATH。
3. 修改EasyPHP启动脚本添加临时PATH
不想修改系统全局PATH的话,可在EasyPHP的启动脚本中设置临时环境变量:
- 找到EasyPHP启动Apache或PHP的
.bat脚本(通常在DevServer的bin或scripts目录); - 在脚本开头添加一行:
set PATH=C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\php\php812vs16x86x230327010135;%PATH% - 保存后重启服务,该配置仅在EasyPHP运行时生效,不影响其他程序。
4. 确认PHP 8.1的线程安全(TS)版本匹配Apache
EasyPHP的Apache是线程安全架构,PHP必须对应线程安全(TS)版本:
- 检查PHP 8.1目录的文件名,确认包含
ts标识(如php812vs16x86ts...); - 如果是非线程安全(NTS)版本,下载替换为同版本的TS版PHP即可。
5. 排查php.ini的潜在冲突配置
- 检查php.ini中是否重复配置了openssl扩展,比如同时存在
extension=openssl和extension=php_openssl.dll,保留其中一行即可; - 暂时注释掉
openssl.cafile或openssl.capath相关配置,排除因CA文件路径错误导致的间接加载问题。
6. 用Dependency Walker检查依赖缺失
下载Dependency Walker工具,打开PHP 8.1的ext\php_openssl.dll,工具会直观显示该扩展依赖的所有库文件:
- 若某dll显示红色标记,说明该文件缺失,将对应的dll复制到PHP根目录或系统PATH中即可。
内容的提问来源于stack exchange,提问作者cFreed
相关产品推荐
相关产品推荐

