问题标签 [xdebug-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
504 浏览

php - 无法在 PHP 8.0 中加载 xdebug

在带有 PHP 8.0.2 的 Windows 10 中,尝试加载 3 个不同版本的 xdebug 都失败,并Failed loading Zend extension 'php_xdebug-...尝试了以下版本:

是否引用文件名没有区别,也没有将路径包含为C:\\...C:/...

我错过了什么?

apache error.log 中的示例错误消息:

PHP Warning: Failed loading Zend extension 'php_xdebug-2.9.8-7.3-vc15-x86_64.dll' (tried: C:\\php\\ext\\php_xdebug-2.9.8-7.3-vc15-x86_64.dll (The specified module could not be found), C:\\php\\ext\\php_php_xdebug-2.9.8-7.3-vc15-x86_64.dll.dll (The specified module could not be found)) in Unknown on line 0

php.ini/xdebug:

阿帕奇是Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/8.0.2

窗户是Windows NT GWB-10 10.0 build 19042 (Windows 10) AMD64

恢复到 PHP 7.x 不是一个真正的选择

0 投票
0 回答
79 浏览

php - Xdebug 没有跳过或进入 - 使用 VSCode 和 Windows

希望以下内容能给您足够的帮助。

我的设置

我在用着:

  • Windows 10(现在为内部版本 19043.1288),
  • VSCode (v1.61.2) 与
  • PHP 调试 (v1.21.1),
  • Firefox 和 Google Chrome 浏览器,
  • XAMPP (v3.3.0)
  • Xdebug(现在 v3.1.1-7.4x86_64)
  • 我还在后台运行 Ubiquiti 网络控制器和 BitDefender AV。

PHP.ini

问题

我已经让 VSCode/XAMPP/Xdebug 与 Joomla 3 一起工作一年多了,没有任何问题。我离开了几个星期,当我回来时,我无法单步进入任何 Joomla 3 模块/课程。VSCode 会在断点处停止,但单步和单步进入都会立即转到父调用函数。

啊,我对自己说,可能Windows做了一些事情——可能是升级到J4的好时机,以及更新我的环境。同样的问题。在第一个断点处停止,不会单步或单步进入 - 它不会在后续断点处停止。在核心 J4 模块中显示为单步。堆栈出现正常 - 可以检查初始化变量。

我试过的

一切!为了保持相关性 - 我现在安装了一个全新的、开箱即用的、纯正的 XAMPP、Joomla4 和 Xdebug(按照 Xdebug 向导的推荐)。我还暂时禁用了我的 AV (BitDefender)。我的电脑上没有任何防火墙,因为我在网络防火墙后面。

以防万一,我做了深度病毒扫描和磁盘检查——什么也没做。

在重新安装所有内容之前,我能够获得 Xdebug 日志文件,但现在我不能。我还注意到断点不会重置 - 我会删除所有 BP,它们会在下一次运行时返回。我必须停止并重新启动 VSCode 中的 PHP 调试才能让它们消失。

我怀疑最新的 Windows 更新(或者可能是最后几个)对我的开发环境有影响。然而,我也有可能在设置中错过了一些愚蠢的东西,因为我已经绕了几次赛道,而且我的头没有按应有的方式运作。

我需要帮助的地方

我现在不知道下一步该尝试什么 - 有什么建议吗?如果没有其他人可以重现这一点 - 这意味着我的系统中的某些东西出现了故障,我们将不胜感激。

更新 1

我发现 Xdebug v2 已经潜入我的 php/ext 目录 - 不太清楚如何 - 这就是我无法让日志文件工作的原因。我现在安装了正确版本(3.1.1)的 Xdebug 并且可以正常工作。然而,单步问题仍然存在。

我现在有一个来自 VSC 调试控制台和 xdebug.log 的日志:见这里

我观察到的一件事是,有许多与不推荐使用的函数相关的错误——我原以为它们是警告而不是错误!

还有许多“错误评估代码”的案例。

我用“************”突出显示了代码在日志中停止的地方。我不知道这是预期的还是正常的,但它似乎确实发生在断点停止之前的一小段时间——调试控制台日志中的第 431 行与第 651 行。

更新 2

以防万一任何人有任何兴趣 - 我安装了带有 PDT 的最新版本的 Eclipse IDE。使用与以前完全相同的 XAMPP/htdocs 目录 - Xdebug 按预期工作。单步没有问题。

这意味着,我相信,Windows、XAMPP、Xdebug 和 Joomla 可以被排除为罪魁祸首,因为这两种环境都很常见。相反,这也意味着 VSCode 发生了一些事情,或者至少与我的特定 VSCode 设置有关。

突破(我认为!)

看来是我放入监视窗口的几个变量(例如 $this->missingclasses)导致了问题。我怀疑在一些 VSCode 更新过程中,与这些变量关联的持久内部对象出现了故障/损坏。当我删除有问题的变量手表时 - 单步再次开始工作。

在看到它起作用之后,我能够把手表放回去,单步工作按预期工作。将相同的监视变量放入 Eclipse 对单步执行没有影响。

为了更好地衡量,我还删除并重新安装了 PHP Debug - 尽管我很确定无法评估的监视变量是这里的真正问题。

我会离开这几天,然后我会用建议的解决方案关闭它

0 投票
0 回答
28 浏览

php - 如何在微服务架构 PHP 应用程序中设置 Xdebug,其中后端拆分为多个项目

我正在做一个项目,我的项目结构如下:

前端:Application-1

后端:(Laravel)Application-1

应用程序-2

前端应用程序通过 http 调用后端程序逻辑。使用多应用程序架构的主要原因是因为库随着时间的推移而改进和变化,所以为了让它在我们使用这种方法的那一刻成为未来的证明。(这个不能改)

Application-2(后端)中的一些程序正在使用 Application-1(后端)中的程序,为此我们使用了一个实用程序,它在工匠的帮助下调用程序。这工作正常。

主要问题在于 Xdebug。在开发过程中,我们只能调试到我们正在调用另一个应用程序的地方,之后 Xdebug 就不起作用了。

有什么方法可以配置可以与调用另一个项目(即多个应用程序调用)一起使用的 Xdebug?首选 IDE:NetBeans、PhpStorm、Eclipse。

如果有不清楚的地方,请发表评论,我会尽力解释。

0 投票
2 回答
73 浏览

php - Xdebug 总是在监听新请求并阻止网页加载以防我不听

我的新工作场所有一个奇怪的设置,它的工作原理是这样的:如果我运行 PhpStorm 并打开“开始侦听 PHP 调试连接”,那么我的本地 PHP 应用程序可以正常工作。一旦我完全关闭 PhpStorm(并因此停止侦听 PHP 调试连接),我的网页就没有加载(一分钟后 nginx 超时)。

这是我的 xdebug.ini 配置:

这是输出php -i | grep -i xdebug

有趣的是,我什至尝试完全卸载 Xdebug,但我仍然遇到同样的问题(虽然我不确定我是否正确地这样做了)。

无论如何我阻止Xdebug建立连接?(并在我实际上只需要调试时启用它)

我正在使用 PHP 7.4.25、Xdebug v3.1.1,并在 Windows (Ubuntu 20.04) 上的 WSL 下运行它。我也在 nginx v1.21.4 后面运行所有东西。

更新 1: 正如@LazyOne 所问,这是我的 xdebug_info() 输出:

xdebug_info 输出的屏幕截图

xdebug_info 的第二部分

更新 2

这是 /etc/php/7.4/fpm/conf.d/xdebug.ini 的输出:

这也是我的 /etc/php/7.4/fpm/conf.d/20-xdebug.ini

这是输出grep -Ri xdebug /etc/php/7.4/fpm/conf.d/

0 投票
0 回答
48 浏览

php - Xdebug 3.1.1 不显示除 $_COOKIE、$_GET、$_REQUEST、$_SERVER 之外的变量

我使用 PHP 7.4.26 和 Xdebug 3.1.1、Apache/2.4.41 (Ubuntu) 和 PhpStorm 作为客户端。

在 xdebug 日志文件中,我看到我在 PHP 脚本中使用的任何变量都是“未初始化”

所以无论我的脚本包含什么,我只收到 4 个变量$_COOKIE, $_GET, $_REQUEST, $_SERVER.

我的 Xdebug 设置:

0 投票
1 回答
83 浏览

docker - PhpStorm 无法在 Vagrant 框内的 Docker 容器上使用 Xdebug

我在 PHP 容器中配置了 Xdebug,该容器由 Vagrant 中的 Docker 运行。

什么是让 Xdebug 在 PhpStorm 中工作的最佳方法,那么如何公开 docker 容器调试器信息(端口 9003)以在启用的 PHP 调试连接侦听器上建立与 PhpStorm 的连接。由于有 2 个通信层(PC->Vagrant->Docker)

0 投票
1 回答
65 浏览

.htaccess - 在 htaccess 文件中设置 xdebug 3 配置值

我正在尝试在.htaccess文件中设置一些 xdebug 3 配置值,但我不断收到“500 内部服务器错误”结果。

使用 xdebug 2,我可以使用php_flag指令设置配置值,例如:

在 xdebug 3 中,xdebug 配置设置发生了变化,但除了一个设置之外的所有设置都应该在.htaccessxdebug.mode唯一的例外)中可用。根据xdebug 文档

除非特别说明,每个设置都可以在 php.ini、99-xdebug.ini 等文件中设置,也可以在 Apache 的 .htaccess 和 PHP-FPM 的 .user.ini 文件中设置。

我也尝试设置XDEBUG_CONFIG环境变量,.htaccess但 PhpStorm 不支持它(设置XDEBUG_CONFIG不会生成“500”页面)。

我可以在我的php.ini文件中启用 xdebug,但我不想为我正在运行的所有本地 php 代码启用它。在文件中启用 xdebug.htaccess允许我只为特定项目或代码启用它。

我在 macOS 上通过 MAMP 运行 PHP 8.0,并使用 xdebug v3.0.0 在 PhpStorm 2021.3 中进行编码/调试。

任何帮助,将不胜感激。

0 投票
2 回答
98 浏览

php - docker的Xdebug没有连接

我正在使用本课程在 Docker 上设置 Xdebug - https://github.com/markshust/docker-magento

该站点已启动并运行良好,但 Xdebug 将无法正常工作。在 Chrome 浏览器上,我有这个设置- 在此处输入图像描述

它在此处启用- 在此处输入图像描述

这是我在 PHPStorm 上的设置: 在此处输入图像描述

这是运行/调试配置的样子 - 在此处输入图像描述

这是我所有的php信息- 在此处输入图像描述

这是为了表明我没有忘记断点- 在此处输入图像描述

我错过了什么?

编辑:Xdebug 配置 在此处输入图像描述

在此处输入图像描述

编辑:以文本形式 - xdebug

当我尝试验证时的样子—— 在此处输入图像描述

0 投票
2 回答
112 浏览

php - Xdebug 忽略在 docker-compose.yml 中设置的 XDEBUG_CONFIG

我有一个配置了 XDEBUG_CONFIG 环境变量的 docker-compose 文件,但 Xdebug 忽略了它。当我输出xdebug_info();时,它对 xdebug.idekey 说“没有价值”。XDEBUG_MODE 虽然被正确读取。

如果我在我的 .ini 文件中设置 idekey,它就可以工作。

PHP 7.4
Xdebug 3.1.2

这是我完整的 docker-compose.yml

还有我的 Dockerfile

0 投票
1 回答
80 浏览

macos - 流浪者 + xdebug + vscode

  • OS X 版本 12.1
  • 流浪者版本 2.2.19
  • vagrant machine 有 ubuntu 16.04
  • php 7.4
  • xdebug v3.0.2
  • nginx服务器

我将 xdebug.ini 的配置更改为:

在 VS 代码中 launch.json :

这是开始调试后的日志输出:

我尝试将此端口添加到 vagrant 文件中,如下所示:

我试图添加和删除这一行:

但它具有相同的输出。

我确实也重新启动了服务,如下所示: