【问题标题】:Xdebug starts the connection and than closes automaticallyXdebug 启动连接,然后自动关闭
【发布时间】:2021-08-11 08:38:50
【问题描述】:

我正在使用 Visual Studio Code,Xdebug 默认安装在其中,版本为 v3.x.x。

下面分享配置,

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9001,   
            "stopOnEntry":true,        
            "log": true,
            "hostname": "localhost",     
            "pathMappings": {
                "/var/www/html": "${workspaceRoot}",
                "/app": "${workspaceRoot}/app"
            }
        }
    ]
}

php.ini,

xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1

test.php

<?php
echo "<script>alert('Welcome');</script>";
phpinfo();
?>

现在,当我在本地主机上的端口 9001 启动调试器时(注意没有远程主机)。并通过http://localhost:9001/test.php

访问它

它在调试控制台上提供以下 cmets,

新连接 1 新连接 2

它开始了,但由于某种奇怪的原因给了我两个新连接,它们只有在我通过浏览器访问后才会打印出来。

现在我等待 5-10 秒(同时,浏览器继续加载,但什么都看不到,它仍在尝试访问 test.php)我已将调试器点放在所有行上。

突然10秒后,它关闭了与下面的cmets的连接,

<- outputEvent
OutputEvent {
  seq: 0,
  type: 'event',
  event: 'output',
  body: { category: 'console', output: 'connection 2 closed\n' }
}

connection 2 closed

<- continuedEvent
ContinuedEvent {
  seq: 0,
  type: 'event',
  event: 'continued',
  body: { threadId: 2, allThreadsContinued: false }
}

<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'exited', threadId: 2 }
}

<- outputEvent
OutputEvent {
  seq: 0,
  type: 'event',
  event: 'output',
  body: { category: 'stderr', output: 'connection closed\n' }
}

**connection closed**

我到处检查,但无法找到我的问题的答案。请求帮助

【问题讨论】:

  • "现在,当我在本地主机的 9001 端口启动调试器时(注意没有远程主机)。通过localhost:9001/test.php 访问它时, 这是只是错误。 1) Xdebug 端口仅用于 Xdebug 和调试客户端——它不应该用作网站地址。 2)它是连接到调试客户端(在你的情况下是VSCode)的Xdebug,而不是其他方式。所以现在你有9001 web 服务器使用的端口......而 VSCode 也是需要在该端口上侦听的端口。难怪它会因为 prot 已被另一个应用程序使用而关闭。
  • Xdebug v3 默认使用9003 端口。由于我看不到在 php.ini 中指定自定义端口,因此您的 VSCode launch.json 应该有 "port": 9003(9003 而不是 9001)。在任何情况下:必须使用 Xdebug 自己的日志进行故障排除——启用它并尝试调试,然后看看它要说什么。 1)youtube.com/watch?v=IN6ihpJSFDw 2)xdebug.org/docs/all_settings
  • 那么你的 xdebug 日志是什么?无论如何:检查 1) stackoverflow.com/q/68668079/783119 2) stackoverflow.com/q/65316966/783119 。我自己并没有真正使用 VSCode(我很高兴 PhpStorm 用户).. 但只是检查了一下,我可以轻松地在 VSCode 中调试 CLI PHP 脚本 -- i.imgur.com/bopBDGX.pngi.imgur.com/7sYTu4m.gif。对于网页,我必须进行额外的设置,而我并不想做 ATM ...
  • 如果你想使用 PhpStorm: 1) jetbrains.com/phpstorm/documentation/debugging 2) jetbrains.com/help/phpstorm/… 。你的 Xdebug 配置——你的 php.ini 的前 2 行——应该足够了。 Xdebug 将使用默认的localhost9003 作为主机/端口来连接。 Xdebug 将显示它尝试连接的位置(如果它尝试连接)以及响应是什么。我正在使用 IIS(Windows Web 服务器)为我的本地开发网站提供服务。但可以调试任何PHP,甚至是PHP自带的内置服务器。
  • P.S. 1) 检查您的实际/实时 Xdebug 配置总是有意义的——使用phpinfo() 并检查 Xdebug 部分.. 或仅使用 xdebug_info() 获取该信息。 2) 使用 Xdebug 日志查看 Xdebug 发生了什么。 3)看看在你的PHP代码(程序断点)中添加xdebug_break();是否会有所作为。

标签: php xdebug


【解决方案1】:

最后我能够在 XAMPP 服务器上使用 Visual Studio 代码启动 Xdebug。我正在分享我的解决方案,以便其他人不会遇到类似的问题。

  1. 在 Ubuntu 上安装 XAMPP

  2. 将其配置为将其路由到 htdocs 文件夹之外的代码 请点击此链接,https://askubuntu.com/questions/64095/change-xampps-htdocs-web-root-folder-to-another-one

  3. 创建 index.php 文件并运行, phpinfo();

  4. 打开浏览器并执行localhost/index.php

  5. 将文字复制到https://xdebug.org/wizard

  6. 结果将是一个带有指令列表的页面,只需逐个执行并确保 Xdebug 已成功安装在 Ubuntu 上

  7. 现在是重要的部分,打开文件 /opt/lampp/etc/php.ini(我试图在我的代码中配置我的本地 Laravel php.ini,这就是它无法识别的地方) 并粘贴以下命令,

    xdebug.mode=debug

    xdebug.start_with_request=yes

    xdebug.client_port=9003

    xdebug.client_host = 本地主机

    zend_extension = "/opt/lampp/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so"

  8. 现在转到 Visual Studio Code 并在 index.php 上打开应用调试器点

  9. 如果还没有配置运行和调试(没有创建launch.json),VS Code 会显示,你可以通过运行配置它。将 launch.json 设置保留为默认值。

  10. 转到运行 --> 开始调试 -> "Listen for Xdebug" 并为 PHP 首次配置。

就是这样!

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2015-08-06
    • 2012-02-21
    • 2018-11-15
    • 1970-01-01
    • 2023-03-03
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多