PHP XDEBUG 无法启用

6

无法启用XDEBUG。需要帮助或检查它是否已启用但未反映?我正在使用PHP7并且正在使用Xdebug 2.4.0rc2。以下是PHP.INI设置:

[XDebug]
zend_extension="C:/php/ext/php_xdebug.dll"

xdebug.remote_enable = on
xdebug.remote_host = localhost
xdebug.remote_port = 10000
xdebug.remote_handler = dbgp
xdebug.profiler_enable = 1 
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "profilerlogs"
xdebug.profiler_output_name = cachegrind.out.%p

无法启用。步骤正确,但在phpinfo()中未显示已安装。


phpinfo() 函数显示 xdebug 是否已启用? - k0pernikus
2
Gary,请创建一个带有“<?php phpinfo();”的PHP文件,然后查看或使用命令行工具“php.exe -m”来查看所有已启用扩展的列表。 - ins0
看起来你的 PHP 页面是在 CGI 或 FPM 上运行的,因此你应该检查你的 phpinfo() 输出中加载了哪些 php.ini 文件,并修改正确的 ini 文件以添加 xdebug - ins0
好的。目前我在环境变量和Apache中都注册了一个PHP版本。即使使用PHP开发服务器,它也没有显示为已启用。我做错了什么导致它不出现在“php -m”命令中吗?其次,“php_xdebug”的“.dll和.pdb文件以及其他扩展提供的“php调试文件(作为下载)”的标准路径是什么?我需要启用其他文件还是只需放入特定文件夹中即可?不确定,可能我做错了。 - Gary
这是一篇非常好的教程,逐步解释了本地PHP调试的过程。https://hubpages.com/technology/Local-PHP-Debugging-with-XDebug-Atom-and-XAMPP - arunjos007
显示剩余5条评论
6个回答

6

我曾经遇到了和XAMPP PHP7相关的同样的问题,现在已经解决了:)

你的C:/php/ext/目录下可能缺少或存在错误的扩展文件。

以下步骤可以解决你的问题:

  1. 前往xDebug
  2. 下载Xdebug 2.4.0rc1 (PHP 7.0 VC14 TS 32/64)
  3. 将其重命名为php_xdebug.dll
  4. 将此文件粘贴到“php/ext”文件夹中
  5. 重新启动服务器。

现在检查你的phpinfo()

在我的情况下,有64位版本,所以我只需更改为32位即可。


我相信我使用了 rc x64 版本的 php7 但是没有起作用。在 phpinfo() 中没有显示出来。安装调试浏览器扩展后,它会设置 xdebug cookie,但这就是我得到的错误,例如 Call to undefined function xdebug_break()。但是我的 php -m 显示 xdebug 在加载的扩展列表中,就像 @ins0 提到的那样。让我尝试使用 xampp 安装程序并查看是否可以使用它。也许我的设置问题会得到解决。让我尝试一下,然后回复您。谢谢。 - Gary
1
它对我有用,谢谢!尽管我有一台64位机器,但我还必须使用32位的扩展。 - djphinesse
@CharlesBlackwell 嗯...那很奇怪。我不得不安装替代扩展。 - Gary

4
除了 @haider-lasani 提到的内容外,请不要忘记您使用的PHP类型。最新的XAMPP使用了一些非常复杂的设置。
转到您的PHP文件夹,检查您是否有php7.dll或php7ts.dll。如果您有后一版本,则应选择xdebug的TS版本。还要检查VC版本。在这种情况下,它是VC14。
即使我正在使用TS版本的PHP,我仍然必须添加插件:zend_extension="C:/php/ext/php_xdebug.dll" 而不是 zend_extension_ts="C:/php/ext/php_xdebug.dll" TL;DR 在下载xdebug时,请确保您: 1. 检查x64 / x86位版本。(为了安全起见,请使用x86 xdebug) 2. 检查您正在使用的PHP版本。 3. 通过检查是否具有php{x}.dll或php{x}ts.dll来检查您是否拥有PHP的TS或非TS版本。 {x}是您的php版本。 4. 尝试在您的php.ini文件中在zend_extension和zend_extension_ts之间切换以包含xdebug插件,以查看哪个有效。
遵循所有这些步骤应该理想地解决您的问题。如果您仍然面临任何问题,请告诉我。平安。

是的,这些都是有效的观点。我可以管理服务器,所以我认为我可能没有错过这些点,但让我再检查一遍。 - Gary
从zend_extension更改为zend_extension_ts是我的问题。谢谢!! - Carson Wood

2
您不应该需要重新命名您的DLL文件,最好不要这样做,因为这样可以让您知道正在运行哪个版本的XDebug。

以下是我所做的,并且它有效:

本答案假定您已经设置了正确的PATH路径项,以便您可以从命令行中运行PHP,例如GitBashhttps://git-for-windows.github.io/

  1. 打开命令行并输入以下内容:

    $ php -i

  2. 向上滚动屏幕并复制从命令行窗口开始的输出,直到看到

    phpinfo()

    ......复制内容直到最后一行,该行以以下内容结尾:

    If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net. `

  3. 进入XDebug Windows向导https://xdebug.org/wizard.php,并将您的PHPInfo粘贴到大文本框中并提交。

  4. 新页面将显示有关您的PHP的指令和"系统摘要"。请仔细遵循指示并选择下载链接。

  5. 一旦您修改了PHP.ini并观察到"ext"文件夹在哪里,就将已下载的XDebug dll文件复制到"ext"文件夹中。

  6. 再次打开命令行,并输入以下命令:

    $ php -m

如果您已经正确地按照说明进行操作,那么输出结果将包含以下内容:

[Zend Modules] Xdebug

否则,在控制台输出的顶部,您将看到一个错误,例如:Cannot load Xdebug 通常,这些错误是由于您的XDebug出现以下问题:
  • 不在正确的位置
  • 版本错误
  • 与线程类型不兼容:您的PHP可能是线程安全的,而您的XDebug不是线程安全的(XDebug向导将自动选择正确的版本)

2

如果您正在使用WSL或Linux进行远程开发,请检查您的php目录,因为您可能需要修改以下位置的php.ini文件:

/etc/php/7.2/apache2/php.ini

/etc/php/7.2/cli/php.ini

使用。

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

;don't forget to change the path and filename to the correct one
;but make sure you use the full path

zend_extension="/usr/local/php/modules/xdebug.so"

0

我大约一周前安装了XAMPP。在ext文件夹中已经自带安装了一个php_xdebug.dll文件。

对我而言,解决办法是像下面这样指定xdebug文件,不需要文件路径:

zend_extension = "php_xdebug.dll"

0
如果您正在运行PHP 7.2和Apache 2.4的Windows 10 x64上,可以像这样指定没有完整路径的DLL。
zend_extension = php_xdebug-2.8.0-7.2-vc15-x86_64.dll

对我来说起作用是因为我的 extension_dir = "ext" 在 php.ini 中被正确设置了。

这里 是一份详细的说明,如果你使用类似的设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接