PHP 8.1在Win10必须将php.exe所在目录(如C:\php)加入系统PATH,并设置PHPRC指向php.ini目录,否则php -v报错或配置不生效;PHP_HOME为可选但推荐,用于Composer等工具。

php.exe 所在目录必须加进系统 PATH,不是 php.ini 路径
Windows 只认 PATH 中精确到可执行文件所在目录的路径,比如 C:\phpEnv\php(含 php.exe),而不是 C:\phpEnv\php\php.ini 或 C:\phpEnv\php\ext。加错路径会导致 php -v 报“不是内部或外部命令”。
- 打开全新 CMD,运行
where php—— 若无输出,说明PATH没生效 - 确认你添加的是
php.exe所在目录,不是上层父目录(如C:\phpEnv)也不是子目录(如C:\phpEnv\php\ext) - 路径末尾不要带反斜杠
\,也不要带引号,例如写C:\phpEnv\php,别写"C:\phpEnv\php\"
phpEnv 用户必须手动加路径,脚本里的 set PATH 无效
phpEnv 启动脚本(如 start.bat)里写的 set PATH=... 是临时会话变量,只对当前 CMD 窗口有效。Apache/Nginx/MySQL 进程、IDE 内置终端、浏览器触发的 PHP 请求,全部读取的是系统级 PATH,不是脚本里设的那个。
- 必须手动进入「环境变量」→「系统变量」→ 编辑
Path→ 新增:C:\phpEnv\php、C:\phpEnv\mysql\bin、C:\phpEnv\redis(按实际安装路径调整) - 改完后,所有已打开的 CMD / PowerShell / VS Code 终端必须彻底关闭再重开,否则仍继承旧环境
- 不要试图修改
phpEnv\php\php.ini里的extension_dir就以为能绕过 PATH —— 如果依赖 DLL(如libssh2.dll)所在目录没进系统PATH,扩展照样加载失败,报错模糊
PHP 8.1+ 必须配 PHPRC,否则 php.ini 不加载
PHP 8.1 开始默认不再从 PATH 目录自动查找 php.ini。只设 PATH 不够,php -i 会显示 Loaded Configuration File => (none),导致 extension=、date.timezone 全部失效。
在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
- 在「环境变量」里新增系统变量:
PHPRC,值为php.ini所在目录(通常是C:\phpEnv\php) - 可选但推荐加
PHP_HOME,值也为C:\phpEnv\php(不含php.exe),供 Composer、phpunit 等工具定位扩展和配置 - 顺序不重要,但验证必须用三步:
php -v(有版本)、php --ini(Loaded Configuration File显示你设的路径)、php -m | findstr "mbstring"(扩展真启用)
想双击 .php 文件直接运行?要配 PATHEXT + ftype
仅靠 PATH 只能让命令行识别 php script.php;若想在资源管理器里双击 script.php 运行,还需两步注册:
立即学习“PHP免费学习笔记(深入)”;
- 把
.PHP加进系统变量PATHEXT(不是PATH),值类似:.COM;.EXE;.BAT;.CMD;.VBS;.PHP - 运行命令:
assoc .php=phpfile,再运行:ftype phpfile="C:\phpEnv\php\php.exe" -f "%1" -- %~2 - 注意路径必须是绝对路径且不含空格;如果
php.exe在C:\phpEnv\php,就写完整路径,别用变量或相对路径
最容易被忽略的是:改完环境变量后没关掉所有终端,或者只信 php -v 成功就以为万事大吉——其实 php.ini 没加载、扩展没启用、依赖 DLL 找不到,全都会静默失败。


















