phpenv 默认不启用 soap 扩展,需手动修改对应 php 版本的 php.ini 文件取消注释 extension=php_soap.dll(windows)或 extension=soap(linux/macos),保存后重启 web 服务及 php-fpm,并通过 php -m 和 test.php 验证生效。

phpEnv 默认不启用 SOAP 扩展,必须手动开启;否则 new SoapClient 或 new SoapServer 会直接报错 Class 'SoapClient' not found。
确认 phpEnv 当前 PHP 版本和配置路径
phpEnv 是多版本共存环境,每个 PHP 版本有独立的 php.ini。不能只改默认路径或全局配置。
- 先用终端进入你的项目目录,运行:
php -v确认当前 CLI 使用的 PHP 版本(如 8.1、8.2) - 再运行:
php --ini查看 “Loaded Configuration File” 对应的完整路径,例如:C:\phpenv\versions\8.2.12\php.ini - 注意:Apache / Nginx 模块模式下可能加载的是另一个
php.ini(如apache2\php.ini),需同步检查 Web 服务使用的配置
修改 php.ini 启用 soap 扩展
phpEnv 的 Windows 版通常自带 php_soap.dll,但默认被注释;Linux 版(如 WSL 中的 phpEnv)则依赖系统包,但配置方式一致。
- 用记事本或 VS Code 打开上一步查到的
php.ini文件 - 搜索
soap,找到这一行:;extension=php_soap.dll(Windows)或;extension=soap(Linux/macOS) - 去掉开头的分号,改为:
extension=php_soap.dll或extension=soap(严格匹配你系统中实际存在的文件名) - 保存文件 —— 注意不要另存为 UTF-8 BOM 格式,否则 PHP 可能解析失败
重启 Web 服务并验证是否生效
phpEnv 自带的 Apache/Nginx 不会自动重载扩展,改完 php.ini 后必须手动重启对应服务进程。
- 若用 phpEnv 自带 Apache:
phpenv apache restart(或进控制台点「重启 Apache」) - 若用 Nginx + PHP-FPM:
phpenv fpm restart,再重启 Nginx - 验证命令(CLI 模式):
php -m | findstr soap(Windows)或php -m | grep soap(Linux/macOS),输出含soap即成功 - 额外验证(Web 模式):建一个
test.php,内容为<?php var_dump(class_exists('SoapClient'));,浏览器访问返回bool(true)才算真正可用
容易被忽略的一点:phpEnv 的「切换 PHP 版本」操作(如 phpenv local 8.2)不会自动同步更新 Web 服务所用的 PHP SAPI 配置,必须手动确认 Apache/Nginx 加载的是你刚改的那个 php.ini,否则改了等于没改。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











