3

我目前正在开发一个 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 上的端口绑定发生得太快了。

通过启动配置文件启动内置服务器似乎是个坏主意......

4

0 回答 0