【问题标题】:How to enable php-debug in Atom?如何在 Atom 中启用 php-debug?
【发布时间】:2018-07-10 13:44:21
【问题描述】:

我已经在 Atom + 它的 IDE 依赖项中安装了 php-debug。当我设置断点时,调试视图打开时显示 调试器未附加,但是当我尝试这样做时,似乎 Atom 无法识别我安装了 php-debug 包并询问我安装调试器。

我在某些地方看到包上有一个切换调试设置,但我看不到那个选项。

我正在使用 Atom 1.27.0 和 PHP 7.2.4:

PHP 7.2.4 (cli) (built: Apr 12 2018 02:49:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
    with Zend OPcache v7.2.4, Copyright (c) 1999-2018, by Zend Technologies

我可以提供 Xdebug 配置,但问题似乎出在 Atom 本身?有人遇到过这个问题吗?

【问题讨论】:

    标签: php atom-editor xdebug


    【解决方案1】:

    很简单

    1. https://xdebug.org/download.php下载xdebug,Apache的TS版本
    2. 复制到php/ext目录
    3. 将php.ini中的文本复制到所有其他扩展下方

    zend_extension="D:/wamp/php/ext/php_xdebug-2.6.1-7.2-vc15-x86_64.dll"
    [xdebug]
    xdebug.remote_enable=1
    xdebug.remote_host=127.0.0.1
    xdebug.remote_connect_back=1 # 对生产服务器不安全
    xdebug.remote_port=9000
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req xdebug.remote_autostart=true

    重启Apache并在<?php phpinfo()?>中找到“xdebug”字符串

    • 安装 atom-debug_ui、php_debug
    • 包 > PHP 调试 > 切换
    • 应用断点并从浏览器运行 PHP 文件,仅此而已。

    如果它询问远程路径http://localhost/DIRECTORY_PATH_TO_PHP_FILE local 是 PHP 文件的目录路径。

    【讨论】:

    • 我猜 xamp 已经有 xdebug 了,你需要检查 php.ini 以查看分配的端口...如果 xdebug 设置不在 php.ini 中,那么你可以通过上述步骤来集成它 xamp,它也可以在那里工作:)
    • 终于用php_xdebug-2.6.1-7.2-vc15.dll 成功了。我有 xdebug 7.0 版本和 php 7.2。现在也可以在 VS Code 中使用
    【解决方案2】:

    几天前我也收到了同样的信息……
    断点被实际击中,由于浏览器的选项卡加载图标,我可以看到这一点,但 Atom 用户界面上没有发生任何事情。我所能做的就是单击停止或分离按钮,这导致 xdebug 结束会话并终止浏览器选项卡加载。
    使用 PHP7.2.7、Xdebug 2.6 (Docker php-fpm-alpine);原子 1.26.1 x64


    TLDR; PHP-debug 扩展无法处理我在配置面板中输入的“路径映射”值。


    Atom 中打开开发控制台让我发现了在 PHP 调试扩展中启动调试会话时发生的错误。

    Atom Debug (PHP Debug) Session initiated
    logger.js? [sm]:43 Atom Debug (PHP Debug) [TypeError: Cannot read property 'endsWith' of undefined
        at Object.exports.generatePathMaps (/hom…]0: TypeError: Cannot read property 'endsWith' of undefined
        at Object.exports.generatePathMaps (/home/me/.atom/packages/php-debug/lib/helpers.js:80:34)
        at /home/me/.atom/packages/php-debug/lib/engines/dbgp/debugging-context.js:112:37
        …
    

    这让我阅读了Github repository 并迅速弄清楚发生了什么。

    我所要做的就是更改我首先错误填写的“路径映射”文本字段值。文本字段需要一个 JSON 字符串,我们可以看到 HERE,路径映射应该是由对象组成的可迭代/数组。它必须看起来像这样:

    [{"localPath":"/home/me/projects/my-project","remotePath":"/var/www/my-project"}]
    

    如果您有多个项目,请添加更多映射对象。请注意,此设置反映在 ~/.atom/.config.cson

    这解决了问题,调试视图不再弹出说没有附加调试器。

    【讨论】:

    • 不幸的是,这与我遇到的错误不同,我在控制台上没有看到该错误,而且我相信我不需要路径映射,因为我正在运行本地服务器
    • 太糟糕了,这没有帮助。所以你的 Atom 的开发控制台不会暴露任何错误和堆栈跟踪?
    【解决方案3】:

    我在 Atom 1.53.0、PHP 7.3 和 XDebug 2.9.8 中也遇到过这个问题。我可以从 netstat 得知 XDebug 正在连接到 Atom,但 PHP Debug 选项卡中没有任何活动,并且控制台或 PHP 控制台中没有消息提示正在(或未)发生的事情。

    与 Stphane 不同,我没有定义任何路径图。但是从他的回答中得到提示,我点击了 PHP Debug 选项卡中的“Path Maps”按钮。然后弹出了一系列错误对话框,我一次能够解决一个。

    在我的例子中,所有错误都是因为我检查的项目中有一些 Unix 符号链接,Windows 不知道如何解释这些符号链接。我通过删除符号链接并将它们指向的文件和目录的副本复制到它们的位置来解决它们。之后,PHP 调试窗格按预期工作 - 尽管调试器仍然显示“未安装调试器”。

    【讨论】:

      【解决方案4】:

      Atom 告诉我调试器没有附加,但我让它工作了。

      我看过 atom php-debug 教程,但遇到了debugger is not Attached等问题。

      我想分享该教程未包含的配置:

      Xdebug.ini 自动启动和 idekey

      ​​>

      首先在教程 xdebug 配置中。将其配置为自动运行。

      xdebug.remote_enable=1
      xdebug.remote_host=127.0.0.1
      xdebug.remote_connect_back=1    # Not safe for production servers
      xdebug.remote_port=9000
      xdebug.remote_handler=dbgp
      xdebug.remote_mode=req
      xdebug.remote_autostart=true
      

      但它会为每个请求运行调试器。所以你可以这样做:

      xdebug.remote_autostart=false
      

      之后,您必须通过将其附加到 xdebug 配置来告诉调试器将调试发送到 atom 的 api:

      xdebug.idekey=xdebug-atom
      

      如果你使用 php-fpm,你必须重新加载它以重新启动你的 http-server:

      sudo systemctl reload php-fpm.service
      

      具有正确 idekey 参数的浏览器扩展

      然后安装浏览器插件,该插件附加一个 cookie 来告诉 xdebug 使这个请求可调试。

      如果你的插件没有 Atom 配置,

      在您的浏览器扩展首选项中:

      IDE key: xdebug-atom
      

      Atom 2 插件启用和禁用 atom-ide-ui-feature-debug

      然后在 Atom 编辑器中:

      安装 atom-debug-uiphp-debug 后。

      从编辑 -> 首选项 -> 包

      选择包atom-ide-ui设置

      启用功能部分 -> 启用调试器

      使其从不启用

      像这样:

      https://github.com/gwomacks/php-debug/issues/310#issuecomment-419751273

      真正的断点

      现在从包 -> 调试 -> 切换调试器

      另一个注意事项是当你想在 atom 中创建断点时。有 2 种类型的断点。 大蓝点小蓝点

      只有较小的适用于调试器。

      喜欢这里的建议: https://learnwithdaniel.com/2019/06/atom-php-debugger/

      使远程路径和本地路径相同

      在来自浏览器的设置请求之后。和 Atom 询问您远程/本地路径。

      使它们相同

      【讨论】:

        猜你喜欢
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 2017-04-18
        • 1970-01-01
        • 2020-10-23
        相关资源
        最近更新 更多