php - VSCode - 启动配置 - PHP 内置服务器:调试后停止
问题描述
我目前正在开发一个 PHP REST API 项目。我是 VSCode 的新手,我目前正在尝试 IDE 的功能。在开发情况下,我使用内置的 PHP 服务器来运行我的 API,使用 CLI :
php -S localhost:8000 -t public
.vscode/launch.json
我尝试创建一个启动配置,以便能够使用文件从 VSCode 运行这个内置服务器。它起初工作,但我注意到当我结束调试会话时,内置服务器没有被杀死。它仍在运行。并且启动配置的下一次执行不会重新启动它。
所以我尝试使用postDebugTask
启动配置的属性来杀死 php 进程,遵循这篇文章。我最终得到了以下文件:
启动.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Run",
"type": "php",
"request": "launch",
"preLaunchTask": "Run PHP built-in server",
"postDebugTask": "Kill PHP built-in server",
"port": 9000
}
]
}
任务.json
{
// @see https://code.visualstudio.com/docs/editor/tasks
"version": "2.0.0",
"tasks": [
{
"label": "Run PHP built-in server",
"type": "shell",
"command": "php -S localhost:8000 -t public"
},
{
"label": "Kill PHP built-in server",
"type": "shell",
"command": "kill $(ps aux | grep php | awk '{print $1}')"
}
]
}
问题是当我停止调试会话时,永远不会执行“终止任务”。知道为什么吗?这可能与 php 命令没有在终端中返回提示有关吗?
编辑:我还发现使用preLaunchTask
启动内置 PHP 服务器会阻止 xdebug 工作。也许 9000 上的端口绑定发生得太快了。
通过启动配置文件启动内置服务器似乎是个坏主意......
解决方案
推荐阅读
- sql - 未在 GROUP BY 原因或聚合函数中选择的列?
- php - Google oauth 2.0 - 我需要刷新令牌吗?
- r - 为什么 R 聚合会删除数据行?
- mysql - 随机选择一半的记录
- c# - 为什么图像转换器没有显示在命名空间中?
- ios - 适用于 Unity 的 Agora 视频 SDK 正在冻结 AR 摄像头
- java - MapStruct 将 List 设置为字段
- c++ - 重载分辨率和用户定义的转换
- node.js - 由于这个`remote:sh:1:react-scripts:Permission denied error`,正在努力将我的反应项目部署到heroku
- reactjs - 如何在图表 js 中消除多条字符中的条之间的间隙(反应 js)