Sublime Text 运行 PHP 依赖系统已安装的 PHP CLI,需确保终端中 php -v 可执行;配置构建系统 { "cmd": ["php", "-f", "$file"], "selector": "source.php" } 并保存为 PHP.sublime-build 后,用 Ctrl-B/Cmd-B 即可运行。

Sublime 本身不运行 PHP,必须依赖系统已安装的 PHP CLI
Sublime Text 是纯编辑器,没有内置解释器。所谓“运行 PHP”,本质是调用你本地命令行里的 php 可执行文件。如果终端里执行 php -v 报错或找不到命令,Sublime 就一定跑不起来 —— 别在 Sublime 配置上浪费时间,先搞定系统级 PHP 安装和 PATH。
常见错误现象:php: command not found(macOS/Linux)或 'php' is not recognized as an internal or external command(Windows),这类报错 100% 是环境变量问题,不是 Sublime 插件没装对。
- macOS:确认
which php有输出,且路径(如/usr/local/bin/php)已加入$PATH;Homebrew 安装后常需手动软链或改 shell 配置 - Windows:检查 PHP 解压目录是否添加到系统
Path环境变量,重启 Sublime(不是仅关闭窗口,要彻底退出进程)才能生效 - Linux:避免用
sudo apt install php-cli后仍报错,可能是默认未启用 CLI SAPI,试运行php7.4 -v看具体版本名,再在 Sublime 构建系统中显式指定
用 Build System 调用 php -f 运行脚本最可靠
Sublime 的构建系统(Build System)是唯一正经跑 PHP 的方式。别信“一键运行插件”,它们底层仍是调用 php -f 或 php -r,自己配反而更透明、少冲突。
操作步骤:
立即学习“PHP免费学习笔记(深入)”;
- 菜单栏 → Tools → Build System → New Build System…
- 替换全部内容为以下 JSON(注意
cmd中的php要和你终端里一致;Windows 用户路径分隔符用正斜杠/或双反斜杠\):
{
"cmd": ["php", "-f", "$file"],
"selector": "source.php",
"file_regex": "php$"
}
保存为 PHP.sublime-build(自动存进 Packages/User/)。之后按 Ctrl+B(Win/Linux)或 Cmd+B(macOS)即可运行当前 PHP 文件。
为什么用 -f?它明确加载并执行指定文件,不会误把 <?php 当作交互输入;而 -r 适合单行测试,但容易因引号嵌套出错。
调试输出中文乱码?优先查终端编码,不是 Sublime 设置
PHP 脚本 echo 中文,在 Sublime 构建面板里显示为 或空格,大概率不是文件编码问题,而是 PHP CLI 输出时的字符集与终端不匹配。
- Windows:CMD 默认是 GBK,但 PHP CLI 倾向输出 UTF-8。临时解法:在构建系统里加一行
"shell_cmd": "chcp 65001 >nul && php -f "$file""(强制 CMD 切 UTF-8) - macOS/Linux:终端一般 UTF-8,但某些 PHP 版本(尤其旧版)可能读取不到 locale。在构建系统中改
cmd为:["env", "LANG=en_US.UTF-8", "php", "-f", "$file"] - 别碰 Sublime 的
default_encoding或fallback_encoding,那只是控制文件打开时的解码,不影响构建面板的 stdout 渲染
想开 Web 服务看页面效果?别硬塞进 Sublime,用 PHP 内置服务器
Sublime 没法模拟 Apache/Nginx,也别装“PHP Server”类插件——它们只是封装了 php -S,还常带端口冲突、路由 bug。
正确做法:终端切到项目根目录,直接运行:
php -S localhost:8000 -t public/
其中 -t public/ 指定 Web 根目录(可省略,默认为当前目录),localhost:8000 是访问地址。浏览器打开 http://localhost:8000 即可。这个命令会持续运行,关掉终端就停,比任何插件都干净。
注意:php -S 不解析 .htaccess,也不支持 mod_rewrite,简单 demo 够用,真开发请用 Docker 或 Valet/MAMP。
复杂点在于 Windows 用户可能遇到端口被占用(Skype、IIS 常抢 80/8000),换端口就行,比如 php -S localhost:8080;还有 PHP 内置服务器不支持多线程,并发高了就卡,这跟 Sublime 无关,是 PHP 自身限制。















