Sublime Text需调用系统php.exe运行PHP,须先配置PHP环境并验证php -v;再通过Build System设置"cmd": ["php", "-f", "$file"]执行当前文件;注意文件编码统一为UTF-8(无BOM),Web功能应使用php -S启动内置服务器。

Sublime Text 本身不能直接运行 PHP,必须靠外部命令调用 php.exe
Sublime Text 是纯编辑器,没有内置 PHP 解释器。所谓“运行 PHP”,本质是让 Sublime 调用系统已安装的 php.exe 去执行当前文件。如果本地没装 PHP,或者 php 命令在终端里都报错,那任何配置都白搭。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先在终端(CMD/PowerShell/Terminal)里运行
php -v,确认能输出版本号;否则先去 windows.php.net 下载并配置好 PATH - Windows 用户注意:不要选“Thread Safe (TS)” + “VC15+ x64” 组合以外的版本,容易和常见 Apache/Nginx 环境不兼容
- macOS 用户若用 Homebrew 安装,确保
which php返回的是/opt/homebrew/bin/php(Apple Silicon)或/usr/local/bin/php(Intel),别是系统自带那个过期的/usr/bin/php
用 Build System 配置 php -f 才能正确执行当前文件
很多人误以为改个菜单项或装个插件就能点一下就出结果,其实关键在 Build System 的 cmd 字段——它得把当前文件路径作为参数传给 php,否则执行的可能是空文件或上一个缓存。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 打开
Tools → Build System → New Build System…,粘贴以下内容后保存为PHP.sublime-build - Windows 示例(路径含空格要加引号):
{ "cmd": ["php", "-f", "$file"], "selector": "source.php", "file_regex": "php$" } - macOS/Linux 示例(推荐用绝对路径防找不到):
{ "cmd": ["/opt/homebrew/bin/php", "-f", "$file"], "selector": "source.php", "file_regex": "php$" } -
$file是 Sublime 内置变量,代表当前保存的文件全路径;-f参数强制指定要执行的脚本文件,比-r或管道更可靠
输出中文乱码?多半是 PHP CLI 默认编码和文件编码不一致
特别是 Windows 上用 GBK 编写的 PHP 文件,被 UTF-8 环境的 php.exe 直接读取时,echo "你好" 会变成问号或方块——这不是 Sublime 的锅,是 CLI 层的编码错位。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 统一用 UTF-8(无 BOM)保存 PHP 文件:右下角点击编码名 → 选
UTF-8→ 保存 - 临时测试是否编码问题:在文件开头加
mb_internal_encoding('UTF-8');和echo mb_convert_encoding('你好', 'UTF-8', 'GBK'); - Windows 用户可尝试在 Build System 里加
"encoding": "cp936"(仅限 CMD 环境),但治标不治本,不如改文件编码 - 避免用
print_r($_SERVER)测试,它默认输出 HTML 实体,在控制台看就是一堆 你
想看浏览器效果?别折腾 Sublime 插件,直接配好本地服务器更稳
Build System 只能跑 CLI 模式(比如 php -f index.php),它不会启动 Web 服务、不处理 GET/POST、也不支持 $_SERVER['REQUEST_URI'] 这类变量。真要测 Web 行为,就得走 HTTP。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 用 PHP 自带的开发服务器最轻量:
php -S localhost:8000 -t ./public(把./public换成你项目根目录) - Sublime 里按
Ctrl+Shift+P→ 输入Terminal→ 选Terminal: New Terminal at File,快速打开当前目录的终端 - 别信“PHP Server”类插件:它们本质也是调
php -S,但路径解析常出错,还可能绑定错端口导致冲突 - 如果必须从 Sublime 一键启动服务,写个简单的 Shell/Batch 脚本,再用 Build System 调用它,比依赖插件靠谱
真正卡住人的往往不是配置步骤,而是搞不清 CLI 和 Web 环境的根本区别——同一个 phpinfo(),在 Build System 里跑出来的是命令行配置,在浏览器里访问的是 Apache/Nginx 加载的配置,ini 文件、扩展、工作目录全都不一样。











