如何在 Visual Studio Code (VSCode) 上运行或调试 php

Posted

技术标签:

【中文标题】如何在 Visual Studio Code (VSCode) 上运行或调试 php【英文标题】:How to run or debug php on Visual Studio Code (VSCode) 【发布时间】:2015-07-09 18:11:43 【问题描述】:

我找不到在 Visual Studio 代码上运行或调试 php 的方法,有人知道怎么做吗?

【问题讨论】:

@WaiHaLee code.visualstudio.com 我同意你的观点,文档很差,难以理解,而且大多数答案都不完整,所以我们必须阅读几十个答案才能弄清楚我们做错了什么。 ASP.NET 调试的设置要容易 100 倍(尽管对于 C#)。 Web Matrix 调试也是如此(用于 PHP)。 我认为本教程可能有用:forevolve.com/en/articles/2016/08/04/…。我还没有尝试过。我不明白为什么设置 VS Code 进行调试如此复杂,因为它在 Visual StudioWeb Matrix 中要简单得多. 嘿你可以跟着指南走:cloudways.com/blog/php-debug-with-xdebug 该指南绝对有效,因为我刚刚成功使用它jonathansblog.co.uk/… 【参考方案1】:

据我今天读到的,目前除了 node.js、javascript 和 TypeScript 之外,您无法调试其他任何东西,但他们说他们想添加可以调试的新语言。编辑器仍在开发中。不过,我认为未来不会有php调试器,因为php是服务器端的,所以你不能单独在客户端上调试它。

如果你想调试php,我可以推荐xDebug。


更新:

现在,可以使用 VS 代码进行调试了。您需要为 VScode 安装 XDebug 和 php-debug 扩展。

【讨论】:

这个答案很奇怪,但我会尽力澄清。 xDebug 是调试 PHP 的选项之一,它作为 PHP 扩展在您的服务器上运行。这是故事的一方面。另一端是 xDebug 客户端。有一些编辑器的客户端,例如 Sublime Text。这些允许您在 PHP 处理请求时在代码上设置断点。所以这里我们需要一个 VSCode 的 xDebug 客户端。希望这能让它更清楚。 一旦完成了这个操作,他必须做什么才能按下 F5 真正启动服务器并打开页面进行调试。这是最难理解的事情,但大多数答案甚至都没有告诉我们任何相关信息。我已经安装了 PHP(通过 IIS Web 平台安装程序),我已经修改了我的 PHP.ini 文件,我已经复制了 XDebug DLL 但那时它仍然无法正常工作。【参考方案2】:

使用 vscode-php-debug 扩展通过 VSCode 调试 PHP

VSCode 现在可以支持通过市场扩展 vscode-php-debug 调试 PHP 项目。

此扩展在后台使用 XDebug,并允许您使用断点、监视、堆栈跟踪等:

在 VSCode 中安装非常简单:使用 F1 调用命令行,然后输入 ext install php-debug

【讨论】:

我可以使用我的本地 VSC 安装调试在服务器上运行的 PHP 代码吗? 它应该可以工作,但我没有测试它。查看自述文件的“远程主机调试”部分 安装可能很简单。配置和实际运行都不是这样。 我是这个扩展的作者,如果你有任何问题可以找我:) 虽然这个答案是正确的,但请注意 John Kaster 的答案包含这个答案,因为他提供的链接涵盖了所有设置步骤。【参考方案3】:

现在有一个方便的指南,用于在 Visual Studio Code 中配置 PHP 调试 http://blogs.msdn.com/b/nicktrog/archive/2016/02/11/configuring-visual-studio-code-for-php-development.aspx

从链接来看,步骤是:

    下载并安装 Visual Studio Code 在用户设置中配置 PHP linting 从 Visual Studio Marketplace 下载并安装 PHP 调试扩展 为 XDebug 配置 PHP 调试扩展

请注意,链接文章中有特定的详细信息,包括您的 VS Code 用户配置的 PHP 值等等。

【讨论】:

我不明白PHP linting 与调试有什么关系...当第 4 步完成后,我们必须做什么才能开始调试代码按下 F5 不会启动任何东西... @Phil1970 PHP Linting 很可能在我发布此内容后发生了变化。我确实记得至少需要 PHP 7.x 才能使 linting 正常工作,而且可能是 VS Code 现在对它有更好的插件支持。 博文没有说明如何配置xdebug链接在vscode中打开,但是这里说明了:***.com/questions/52935738/…【参考方案4】:

如果您使用的是 Ubuntu 16.04 和 php7,您可以使用以下命令安装 xdebug:

sudo apt-get install php-xdebug

你可以找到完整的配置过程here。

如果你使用的是windows,你可以从xdebug.org下载xdebug。

然后在带有php-debug 扩展名的VS-code 中开始调试。

【讨论】:

与其他许多答案一样,您并没有提供太多关于之后要做什么的信息,以便服务器和网络浏览器在指定页面上启动。【参考方案5】:

他们已经足够帮助完整的答案,但如果你想看看这个过程然后[ click here ]

简短的步骤

下载php调试插件[https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug] 下载xDebug.dll [https://xdebug.org/wizard.php] 将 xdebug 文件移动到 [ ?? /php/ext/这里]

使用以下行更新 php.ini 文件:

[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1 zend_extension=path/to/xdebug

[好走]

    确保您已重新启动本地服务器

来源:https://www.youtube.com/watch?v=8MLEB1qx984

【讨论】:

您能否提供有关如何启动服务器的更多信息。我假设按下 F5 来调试应用程序会自动启动服务器(或者如果出现问题则显示适当的消息)。顺便说一句,我不知道视频是否有所需的信息,但听着很痛苦【参考方案6】:

值得注意的是,您必须在 Visual Studio Code 中打开项目文件夹才能使调试器工作。在编辑器中只打开单个文件时,我浪费了几个小时让它工作。

问题解释here

【讨论】:

哈哈,我花了几个小时试图让它工作后才读到这篇文章,发现当我打开一个文件夹时它才开始工作!!【参考方案7】:

要使用 vscode 调试 php,你需要这些东西:

    安装了 php 调试插件(XDebug)的 vscode; 下载并配置了 XDebug.so/XDebug.dll 的 php; 一个web服务器,比如apache/nginx或者什么都没有(使用php内置服务器)

您可以按照 vscode 官方指南轻轻地完成第 1 步和第 2 步。完全建议使用XDebug installation wizard 来验证您的 XDebug 配置。

如果你想在没有独立Web服务器的情况下进行调试,可以选择内置的php。通过php -S localhost:port -t path/to/your/project命令启动内置服务器,将你的项目目录设置为文档根目录。你可以参考this post了解更多详情。

【讨论】:

这个问题是在 2 年前回答的。 我在想可以使用 IIS 来运行 PHP... 每次我想调试时都必须输入上述命令吗?对我来说,F5 不会启动服务器似乎很愚蠢。 @MaciejJureczko 尽管您可能认为这个问题在 2 年前就已经得到了解答,但直到今天,文档仍然很差,对于只使用过 ASP 的人来说,很难在网络上找到信息。 NET + Visual StudioPHP + Web Matrix大多数其他答案都没有谈论启动网络服务器。 @Archman 我们是否必须每次都启动服务器,如果是,我们是否应该在按 F5 开始调试之前启动它。对我来说,启动调试不会启动服务器似乎很奇怪。 @Phil1970 我们不需要每次都重启服务器,F5表示开始调试,服务器一直在运行(F5不会启动任何服务器)。【参考方案8】:

有一种更简单的方式来运行 PHP,无需配置:

    安装Code Runner Extension 在文本编辑器中打开 PHP 代码文件 使用快捷方式Ctrl+Alt+N 或按F1,然后选择/键入Run Code, 或右键单击文本编辑器,然后在编辑器上下文菜单中单击Run Code 或点击编辑器标题菜单中的Run Code按钮 或点击文件资源管理器上下文菜单中的Run Code按钮

此外,您可以选择部分 PHP 代码并运行代码 sn-p。很方便!

【讨论】:

它会打开浏览器并允许导航到站点中的其他页面吗?否则,这个技巧对于严肃的调试没有多大用处。 @Phil1970 Code Runner for php 主要用于需要运行隔离的 php 代码 sn-p 时,而不是真正用于调试整个网站【参考方案9】:

如果您不想安装 xDebug 或其他扩展,而只想运行 PHP 文件而不进行调试,您可以使用构建任务来完成此操作。

使用构建任务

首先打开命令面板(Ctrl+Shift+P在Windows中,+ Shift+P in Mac),然后选择“Tasks:Open User Tasks”。现在将我的配置复制到您的 tasks.json 文件中。这将创建可以在任何时间和任何工作空间中使用的用户级任务。


    "version": "2.0.0",
    "tasks": [
        
            "label": "Start Server",
            "type": "shell",
            "command": "php -S localhost:8080 -t $fileDirname",
            "isBackground": true,
            "group": "build",
            "problemMatcher": []
        ,
        
            "label": "Run In Browser",
            "type": "shell",
            "command": "open http://localhost:8080/$fileBasename",
            "windows": 
                "command": "explorer 'http://localhost:8080/$fileBasename'"
            ,
            "group": "build",
            "problemMatcher": []
        
        
            "label": "Run In Terminal",
            "type": "shell",
            "command": "php $file",
            "group": "none",
            "problemMatcher": []
        
    ]

如果您想在终端中运行 php 文件,请打开命令面板并选择“任务:运行任务”,然后选择“在终端中运行”。

如果您想在响应网络浏览器的网络服务器上运行代码,请打开命令面板并选择“任务:运行任务”,然后选择“启动服务器”以运行 PHP 的内置服务器,然后“在浏览器中运行”从浏览器运行当前打开的文件。

请注意,如果您已经有一个网络服务器正在运行,您可以删除 Start Server 任务并更新 localhost:8080 部分以指向您正在使用的任何 URL。

使用 PHP 调试

注意:这部分是在我原来的答案中。我最初认为它可以在没有 PHP Debug 的情况下工作,但看起来 PHP Debug 实际上在启动配置中公开了 php 类型。没有理由在上述构建任务方法上使用它。我把它留在这里以备不时之需。

将以下配置复制到您的用户设置中:


    "launch": 
        "version": "0.2.0",
        "configurations": [
            
            "type": "php",
            "request": "launch",
            "name": "Run using PHP executable",
            "program": "$file",
            "runtimeExecutable": "/usr/bin/php"
            ,
        ]
    ,
    // all your other user settings...

这将创建一个全局启动配置,您可以在任何 PHP 文件上使用它。注意runtimeExecutable 选项。您需要使用机器上 PHP 可执行文件的路径来更新它。复制上述配置后,只要打开 PHP 文件,就可以按 F5 键运行 PHP 代码,并在 vscode 终端中显示输出。

【讨论】:

很好的答案。谢谢 这对我不起作用。我在尝试 F5 时在弹出窗口中收到错误“不支持配置的调试类型 'php'” @JamieMarshall 嘿,抱歉回复晚了。实际上我不久前意识到我的部分答案是错误的,但直到现在我才开始更新它。关于启动配置的部分仍然取决于 xDebug。但是,您可以使用构建任务在终端中运行您的文件。请查看更新版本。谢谢。 @KodosJohnson 您的任务配置缺少逗号【参考方案10】:

对我来说最好的解决方案是添加一个键绑定以直接在终端中运行 PHP 代码

为此,您只需从 VS 代码扩展市场下载 terminal-command-keys

然后进入File>Preferences>Keyboard Shortcuts并点击右上角的如下图标:

它将打开keybindings.json 文件

添加以下设置

[
    
        "key": "ctrl+s",
        "command":"terminalCommandKeys.run",
        "when": "editorLangId == php",
        "args": 
            "cmd":"php $file",
            "newTerminal":true,
            "saveAllfiles": true,
            "showTerminal": true,
        
    
]

key是运行你的PHP文件的快捷方式(我使用ctrl+s)你可以随意改变它

when为不同的文件类型运行不同的命令(我只为PHP文件设置)vscode's "when" clauses

查看here的完整设置文档

就是这样,希望对你有帮助。

【讨论】:

【参考方案11】:

XDebug 更改了一些配置设置。

旧设置:

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = 9000

新设置:

xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9000

所以你应该将后者粘贴到 php.ini 文件中。 更多信息:XDebug Changed Configuration Settings

【讨论】:

以上是关于如何在 Visual Studio Code (VSCode) 上运行或调试 php的主要内容,如果未能解决你的问题,请参考以下文章

visual studio code怎么新建vue工程

Visual Studio Code -VS Code

关于Light主题的Visual Studio 2017 v15.7.2代码镜头问题

Visual Studio Code 配置VUE开发环境

[tool] Visual Studio Code 中文配置

如何在Visual Studio Code 中运行 Python