VS Code 运行 PHP 文件需本地安装并配置 PHP 到系统 PATH;可通过集成终端(php ./file.php)或自定义 tasks.json 任务执行;PHP Server 类插件用于 Web 服务而非 CLI 脚本执行。

VS Code 本身不内置 PHP 运行环境,所谓“运行单个 PHP 文件”,本质是调用本地已安装的 php 命令行解释器执行脚本。能否成功,取决于系统 PATH 是否包含 PHP 可执行文件,以及你是否在终端或任务中正确触发它。
确认 php 命令可用
这是所有后续操作的前提。VS Code 的集成终端(Ctrl+`)本质上是你的系统 Shell,它不会自动识别你电脑上装的 PHP,除非你能从任意终端窗口直接敲 php -v 并看到版本输出。
- 打开 VS Code 集成终端,输入
php -v;若报错command not found或'php' is not recognized,说明 PHP 未加入系统 PATH - Windows 用户常见情况:XAMPP/WAMP 安装后,
php.exe在C:\xampp\php或C:\wamp64\bin\php\php8.2.12这类路径下,需手动把该目录加进系统环境变量PATH -
macOS/Linux 用户若用 Homebrew 安装,通常
php已就绪;若用phpbrew或asdf,需确保当前 shell 已加载对应版本(如运行过phpbrew use php-8.2)
用集成终端快速执行当前 PHP 文件
这是最轻量、最可控的方式,无需插件、不改配置,适合调试小脚本或 CLI 工具。
- 确保当前打开的是你要运行的
.php文件(比如test.php) - 按下
Ctrl+`唤出集成终端 - 输入命令:
php ./test.php(注意./表示当前目录,不能省略,否则可能误执行全局同名文件) - 如果脚本需要参数,直接追加:
php ./test.php arg1 arg2 - 想避免每次输文件名?可配合 VS Code 的「在终端中运行活动文件」快捷键:
Shift+Cmd+P(macOS)或Shift+Ctrl+P(Win/Linux),输入Terminal: Run Active File in Active Terminal并回车——前提是终端已激活且 PHP 可用
配置自定义任务(tasks.json)一键运行
适合频繁运行、带参数或需固定工作目录的场景。VS Code 的任务系统能复用 shell 能力,比插件更稳定。
立即学习“PHP免费学习笔记(深入)”;
- 在项目根目录创建
.vscode/tasks.json - 写入以下内容(适配你的 PHP 路径和需求):
{
"version": "2.0.0",
"tasks": [
{
"label": "Run PHP file",
"type": "shell",
"command": "php",
"args": ["${file}"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
},
"problemMatcher": []
}
]
}
- 保存后,按
Ctrl+Shift+P→ 输入Tasks: Run Task→ 选Run PHP file即可执行当前打开的文件 -
${file}是 VS Code 变量,自动展开为完整绝对路径,避免相对路径歧义 - 如需传参,把
"args"改成:["${file}", "arg1", "arg2"];若参数需用户输入,得配合扩展如InputBox Tasks,原生不支持交互式参数
别依赖「PHP Server」类插件来“运行脚本”
像 PHP Server、PHP Debug 这些插件,核心目标是启动一个 Web 服务器(类似内置 php -S),用于浏览器访问 http://localhost:8000/index.php。它们不是为 CLI 脚本设计的。
- 你双击一个
script.php然后点插件的「Start Server」,它并不会执行这个脚本,而是监听请求——除非你在浏览器里访问它,且脚本里没 exit(),才可能看到输出 - 想用
php -S快速起服务?终端里直接敲php -S localhost:8000更快,无需插件 - 真正需要调试 Web 请求逻辑时,再配
PHP Debug+ Xdebug;纯 CLI 脚本,终端或任务就够了
最容易被忽略的一点:PHP CLI 和 Web SAPI(如 Apache mod_php 或 FPM)的配置文件(php.ini)通常是分开的。你在终端跑 php -i | grep 'Loaded Configuration File' 查到的 ini 路径,很可能和浏览器里 phpinfo() 显示的不同。调试时输出不一致?先确认你改的是哪个 php.ini。











