我已经在 Atom 中安装了 php-debug + 它的 IDE 依赖项。当我设置断点时,调试视图打开,说调试器未附加,但是当我尝试这样做时,似乎 Atom 无法识别我安装了 php-debug 包并要求我安装调试器。
我在某些地方读到包上有一个切换调试设置,但我看不到该选项。
我正在使用 Atom1.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 本身上?有人有这个问题吗?
非常简单
- 从 https://xdebug.org/download.php 下载 xdebug,适用于 Apache 的 TS 版本
- 将其复制到 php/ext 目录
- 在 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=真
重新启动 Apache 并在<?php phpinfo()?>
中找到"xdebug"字符串
- 安装原子debug_ui,php_debug
- 包> PHP 调试>切换
- 应用断点并从浏览器运行PHP文件,仅此而已。
如果它要求远程 http://localhost/DIRECTORY_PATH_TO_PHP_FILE 路径 本地是 PHP 文件的目录路径。
几天前我收到了相同的消息......
断点被准确命中,由于浏览器的选项卡加载图标,我可以看到这一点,但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存储库中阅读并迅速弄清楚发生了什么。
我所要做的就是更改我首先错误填写的"路径映射"文本字段值。文本字段需要一个 JSON 字符串,正如我们在这里看到的,路径映射应该是由对象组成的可迭代/数组。它必须像这样徘徊:
[{"localPath":"/home/me/projects/my-project","remotePath":"/var/www/my-project"}]
如果您有多个项目,请添加更多映射对象。请注意,此设置反映在 ~/.atom/.config.cson中
这解决了问题,调试视图不再弹出,说没有附加调试器。
我在Atom 1.53.0,PHP 7.3和XDebug 2.9.8中也遇到了这个问题。我可以从netstat中看出XDebug正在连接到Atom,但是PHP调试选项卡中没有任何活动,控制台或PHP控制台中也没有消息来提示正在(或没有)发生的事情。
与Stphane不同,我没有定义任何路径图。但是从他的回答中得到了提示,我点击了PHP调试选项卡中的"路径映射"按钮。然后弹出一系列错误对话框,我一次可以解决一个。
就我而言,所有错误都是因为我签出的项目包含一些Unix符号链接,Windows不知道如何解释。我通过删除符号链接来解决它们,并将它们指向的文件和目录的副本复制到它们的位置。之后,PHP 调试窗格按预期工作 - 尽管调试器仍然显示"未安装调试器"。
Atom告诉我调试器没有附加,但我让它工作了。
我看到了 atom php-debug 教程,但遇到了调试器未附加等问题。
我想分享该教程未包含的配置:
Xdebug.ini autostart 和 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 服务器之外重新加载它:
sudo systemctl reload php-fpm.service
具有正确 idekey 参数的浏览器扩展
之后安装浏览器插件,该插件附加一个cookie以告诉xDebug使此请求可调试。
如果您的插件没有 Atom 配置,
在浏览器中,扩展首选项执行以下操作:
IDE key: xdebug-atom
Atom 2 插件 启用和禁用 atom-ide-ui-feature-debug
之后在 Atom 编辑器本身:
在安装atom-debug-ui和php-debug之后。
从编辑 -> 首选项 -> 包
选择"包原子-IDE-UI包设置"。
部分启用功能->启用调试器
使其从不启用。
喜欢这个:
https://github.com/gwomacks/php-debug/issues/310#issuecomment-419751273
真正的断点
现在从包 -> 调试 -> 切换调试器
另一个注意事项是当你想在 Atom 中建立断点时。 有两种类型的断点。大蓝点和小蓝点。
只有小的适用于调试器。
像这里建议: https://learnwithdaniel.com/2019/06/atom-php-debugger/
使远程路径和本地路径相同
从浏览器发出设置请求后。 和原子询问您的远程/本地路径。
使它们相同