如何在 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 Studio 和 Web 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 Studio 和 PHP + 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的主要内容,如果未能解决你的问题,请参考以下文章
关于Light主题的Visual Studio 2017 v15.7.2代码镜头问题