XAMPP for Windows 中 SOAP 扩展默认已编译,只需在 phpinfo() 显示的真实 php.ini 中取消 extension=soap 注释、确认 extension_dir 正确、重启 Apache,并用 class_exists('SoapClient') 验证。

SOAP 扩展在 XAMPP for Windows 中默认已编译支持,只需启用 extension=soap 并确保 extension_dir 正确,重启 Apache 即可生效;改错 php.ini 路径是失败最常见原因。
确认当前实际加载的 php.ini 路径
Apache 和 CLI 可能使用不同配置文件,phpinfo() 显示的 Loaded Configuration File 才是真实生效路径。很多人在 XAMPP 控制面板里点 “Config → PHP (php.ini)” 打开的文件,其实是默认模板,未必被 Apache 加载。
- 在
\xampp\htdocs\下新建info.php,内容为<?php phpinfo(); ?> - 浏览器访问
http://localhost/info.php,查找 “Loaded Configuration File” 行 - 常见正确路径是
C:\xampp\php\php.ini,但若启用了 PHP 版本切换(如 8.2/8.3),可能是C:\xampp\php\php-8.3\php.ini
启用 soap 扩展并检查依赖项
SOAP 依赖 libxml,而 XAMPP 默认已启用该基础扩展,无需额外操作。重点是取消注释并验证扩展名写法是否符合平台规范。
- 用文本编辑器打开上一步确认的
php.ini - 搜索
;extension=soap,去掉分号改为extension=soap - 如果搜不到这行,在
; Dynamic Extensions区域下方手动添加extension=soap - 确认
extension_dir指向正确目录,例如extension_dir = "C:\xampp\php\ext"(Windows 下路径末尾不能有反斜杠) - 不要写成
extension=php_soap.dll或带完整路径——XAMPP 的extension_dir已预设,硬写反而会失败
重启 Apache 后验证是否真正加载
仅保存 php.ini 不够,Apache 必须完整重启才能重新加载扩展模块。验证不等于“看到 extension=soap 这行”,而是看运行时是否可用。
立即学习“PHP免费学习笔记(深入)”;
- 在 XAMPP 控制面板中点击 Stop 再点击 Start Apache(不是 “Restart Module”)
- 刷新
http://localhost/info.php,搜索 “soap”,应出现 SOAP 模块区块,含Soap Client、Soap Server等字段 - 新建
test-soap.php放入htdocs:<?php var_dump(class_exists('SoapClient')); ?>,返回bool(true)才算成功 - 若报错
Class 'SoapClient' not found,说明扩展未加载,优先检查php.ini路径和extension_dir
常见失败场景与绕过判断逻辑
当 phpinfo() 不显示 SOAP 区块,但 php -m | findstr soap 在命令行有输出,说明 CLI 和 Web SAPI 使用了不同配置——此时你改的 php.ini 是 CLI 用的,Apache 根本没读它。
- Windows 下 Apache 使用的是模块模式(libphp),加载的是
php\php.ini,不是apache\bin\php.ini - 若启用后
SoapClient实例化报SSL certificate problem: unable to get local issuer certificate,这不是 SOAP 本身问题,而是 cURL + OpenSSL 配置缺失,需额外设置curl.cainfo - SOAP 扩展在 PHP 8+ 中无需额外 DLL,但旧版 XAMPP(如 7.4)若报
PHP Warning: Unable to load dynamic library 'soap',检查ext目录下是否存在php_soap.dll(极少发生,XAMPP 通常自带)
真正卡住的地方往往不是“怎么开”,而是“开了哪份 ini”;哪怕只差一个字符的路径偏差,或者多了一个反斜杠,都会让 extension=soap 彻底静默失效。验证务必走 phpinfo() + class_exists() 两条路,缺一不可。



















