【问题标题】:How to PHP debug a single website in VS Code如何在 VS Code 中 PHP 调试单个网站
【发布时间】:2017-12-04 16:12:22
【问题描述】:

设置;

  1. Windows 操作系统(好吧,我必须这样做)
  2. WAMP 作为服务器
  3. IDE 的 VS 代码
  4. 浏览器谷歌浏览器

一切正常,除了...其他“本地主机”站点)

此时,一切似乎都只是锁定并停止工作。我知道这是因为 xdebug 在“其他”网站上捕获警告/错误等。单击“调用堆栈”并单击“继续”按钮并不总是(很少)保持进展。

如何设置 vs code/xdebug 只监控一个网站?

我的主要网络应用程序在http://reqapp.dev[本地] 提供服务
我的 phpMyAdmin 位于 http://wamp/phpmyadmin/
和其他网站在http://localhost/path/to/website/

我在 Aptana Studio 中做同样的事情(实际上是相同的开发环境)从来没有遇到过问题,但它会“启动”网站进行调试,而且我认为它使用了一个特殊的端口。我不知道如何用 VS Code 复制它。

编辑:
大多数网站都被定义为虚拟主机

httpd-vhosts.conf

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot c:/Users/chadmeyers/Sites
    <Directory  "c:/Users/chadmeyers/Sites">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName wamp
    DocumentRoot "c:/wamp64/www"
    <Directory  "c:/wamp64/www/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName reqApp.dev
    DocumentRoot "c:/users/chadmeyers/sites/aaappdev/public_html"
    <Directory  "c:/users/chadmeyers/sites/aaappdev/public_html/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

还有 php.ini

[xdebug]
zend_extension ="c:\wamp64\bin\php\php7.0.10\ext\php_xdebug-2.5.5-7.0-vc14-x86_64.dll"

xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.profiler_enable = On
xdebug.profiler_enable_trigger = On
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.var_display_max_depth = 5
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 

在 VS Code PHP Debug 中我有这些设置,但我使用哪个“配置文件”没有区别

  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000
    },
    {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9000
    },
    {
      "name": "debug FRAaap",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "C:\\Users\\chadmeyers\\Sites\\aaAppDev\\public_html\\",
      "port": 9000
    }
  ]
}

【问题讨论】:

  • Xdebug 设置? WAMP 中的站点是如何定义的?作为虚拟主机(所以每个人都使用自己的域名)还是什么?如果您使用 cookie/query 参数来启动调试会话,那么它不应该影响其他站点(因为它应该是每个域)。但也许你启用了xdebug.remote_autostart——在这种情况下,xdebug 将尝试调试每个脚本。至于锁定的可能原因 - xdebug 可能正在启动另一个调试会话,而 VS Code 一次可能支持不超过一个......所以它会坐下来等待当前一个调试会话完成。
  • 你得到它是为了锁定。我将发布我的 xdebug 设置
  • 嗯..你有xdebug.remote_autostart = On。 Xdebug 本身将尝试调试每个域上的每个请求(即使在 CLI 模式下——在控制台/终端中)。禁用该选项并以另一种方式传递“调试我”标志(cookie(查找 xdebug 浏览器扩展)或 GET/POST 参数(IDE/编辑器应在调试时将其添加到请求的 URL_)。P.S.如果您需要更多1 个同时调试会话 - 尝试 PhpStorm(它可以这样做,在从默认值 1 手动增加限制之后)。它还可以忽略来自另一个(尚未配置)域的请求。虽然它是付费软件
  • 使用 XAMPP 试试这个:gist.github.com/odan/1abe76d373a9cbb15bed

标签: php visual-studio-code xdebug


【解决方案1】:

根据有关xdebug.remote_autostart 的一些提示,我进行了更多搜索,并遇到了this article,这让我有了更好的理解。我关闭了xdebug.remote_autostart 按照建议,the Chrome Xdebug helper 也有很大帮助,自动启动调试会话。

现在,如果我想启动 Xdebug,我只需将 XDEBUG_SESSION_START 和一个随机字符串附加到我的网址即可,它可以工作,或者使用扩展名。

要真正让这项工作变得更好,我还有很多事情要做,但现在就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2022-11-24
    • 1970-01-01
    • 2010-12-29
    • 2021-05-12
    • 2019-10-10
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多