检查xdebug是否正常工作

osh*_*nen 70 php xdebug

如果没有安装texteditor或IDE,是否可以测试xdebug是否正常工作,即它是否可以调试php代码?

phpinfo()中出现的唯一部分xdebug如下:

其他.ini文件解析为/etc/php5/apache2/conf.d/mysql.ini,/etc/php5/apache2/conf.d/mysqli.ini,/etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini,/etc/php5/apache2/conf.d/xdebug.ini

在其他地方的phpinfo()中没有提到它.

Spu*_*ley 79

如果没有实际进行一些调试,我猜你无法确定调试器是否正常工作.

但你可以非常肯定 - 我想人们应该假设,如果xDebug的某些方面正在发挥作用,那么它将全部起作用.

鉴于此,您可以通过尝试以下方法确认xDebug已安装并就位:

1)phpinfo()- 这将显示所有加载的扩展,包括xDebug.如果它在那里,那么它是一个安全的赌注,它正在工作.

2)如果这对您不够好,您可以尝试使用该var_dump()功能.xDebug修改输出var_dump()以包含其他信息.如果这已经到位,那么xDebug正在运行.

3)xDebug修改PHP的错误输出.如果您的程序在xDebug中崩溃,您将获得有关失败的更多信息,而不是标准的PHP崩溃输出.

4)xDebug还为PHP添加了许多辅助函数.您可以尝试其中任何一个,看看它是否正常工作.例如,该函数xdebug_get_code_coverage()应该存在并返回一个数组.如果是,则安装xDebug.如果不是,那就不是.

  • 很公平.这相当确凿地告诉你xdebug没有正确安装. (7认同)
  • 刚试过`xdebug_get_code_coverage()`我得到'致命错误:在第5行的/var/www/xdebug.php中调用未定义的函数xdebug_get_code_coverage(). (2认同)
  • 如果是这种情况,则仅供参考,然后应打开`/ etc / php / conf.d / xdebug.ini`文件,该文件是在解析的其他.ini文件中提到的文件,并取消注释其中的所有行。`zend_extension = xdebug.so xdebug.remote_enable = on xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_handler = dbgp` (2认同)

Luk*_*nga 59

php -m -c
Run Code Online (Sandbox Code Playgroud)

在你的终端,然后寻找[Zend Modules].它应该在某处,如果它被加载!

NB

如果您使用Ubuntu的,它可能不是在这里,因为你需要从添加的XDebug设置显示/etc/php5/apache2/php.ini/etc/php5/cli/php.ini.我的是

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)

  • 如果加载了,那么`php --version`也会列出Xdebug (12认同)
  • @mfink `php --version` 对我不起作用。启动我的机器后,Apache 启动并工作后,`php --version` 显示 Xdebug,但 `phpinfo()` 不显示 xdebug 部分。并且 PHP 脚本执行不会在断点处停止。我运行“service apache2 restart”后,“phpinfo()”显示 xdebug 部分并进行调试。因此,由于某种原因,当 Apache 在机器启动期间启动时,xdebug 没有被加载。所以现在我必须在每次启动后重新启动 Apache。 (2认同)

Ksa*_*saR 25

尝试如下,应返回"存在"或"不存在":

<?php
echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
Run Code Online (Sandbox Code Playgroud)


Thé*_*nza 22

经过近24小时的苦苦尝试使xdebug与Netbeans 8.0.2一起使用后,我找到了一个解决方案,我希望它可以用于所有Ubuntu和Ubuntu相关的堆栈.

问题1:PHP和xdebug版本必须兼容

有时,如果您正在运行Linux安装程序并且apt-get安装xdebug,它将无法获得正确的xdebug版本.在我的情况下,我有最新的PHP版本,但旧的xdebug版本.这必须归功于我目前的Xubuntu版本.软件版本依赖于存储库,这取决于您运行的操作系统版本.

解决方案:PHP有一个称为PECL的简洁扩展管理器.按照此处给出的说明启动并运行.首先,正如评论中的成员所指出的,您应该安装PHP的开发人员包以使PECL工作:

sudo apt-get install php5-dev
Run Code Online (Sandbox Code Playgroud)

然后,使用PECL,您将能够安装最新的稳定版xdebug:

sudo pecl install php5-xdebug
Run Code Online (Sandbox Code Playgroud)

一旦你这样做,将安装正确版本的xdebug但不准备使用.之后,您需要启用它.我已经看到了很多关于如何做的建议,但事实是PHP需要为客户端和服务器启用一些模块,在本例中是Apache.看来这里最好的做法是使用内置的启用模块的方法,称为php5enmod.这里描述用法.

问题2:正确启用模块

首先,你需要进入/ etc/php5文件夹.在那里,你会找到3个文件夹,apache2,cli和mods_available.mods_available文件夹包含文本文件,其中包含激活给定模块的说明.名称约定是[module] .ini.看看其中几个,看看它们是如何设置的.

现在你必须在mods_available文件夹中创建你的ini文件.创建一个名为xdebug.ini的文件,并在文件中粘贴:

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)

确保指令[xdebug]存在,与上面的示例完全相同.该模块必须工作.事实上,只需复制并粘贴整个代码,你就会成为一个更快乐的人.:d

注意:zend_extension路径非常重要.在这个例子中,它指向当前版本的PHP引擎,但是您应该首先转到/ usr/lib/php5并确保使用数字命名的文件夹是正确的.将名称调整为您在那里看到的任何内容,当您在其中时,检查文件夹内部以确保xdebug.so确实存在.应该是,如果你做的一切正确的话.

现在,在创建了xdebug.ini之后,就可以启用该模块了.为此,打开控制台并键入:

php5enmod xdebug
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,PHP会创建两个指向此文件的链接,一个位于/etc/php5/apache2/conf.d内,另一个位于/etc/php5/cli/conf.d内.

重新启动Apache服务器并在控制台上键入:

php -v
Run Code Online (Sandbox Code Playgroud)

你应该得到这样的东西:

PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)

这意味着PHP客户端确实读取了您的xdebug.ini文件并加载了xdebug.so模块.到现在为止还挺好.

现在在Web服务器的某处创建一个phpinfo脚本,然后运行它.如果一切都变得紧张,你应该看到这个:

在此输入图像描述

如果你看到这个,Apache也加载了模块,你可能已经准备好了.现在让我们看看Netbeans是否会正确调试.创建一个非常简单的脚本,添加一些变量,为它们赋值,并在它们上设置断点.现在点击CTRL + F5,点击你的调试器面板上的"步入",看看你是否得到这样的东西:

xdebug在行动

请记住在tools/options/php下检查Netbeans配置以进行调试.它应该看起来像这样:

调试Netbeans上的配置

我希望这能够解释这个相当模糊,令人困惑的问题.

最好的祝愿!

  • 为我工作,这个答案应该在xdebug或netbeans网站上 (2认同)

gou*_*oup 12

只是为了扩展KsaR的答案并提供从命令行检查 xdebug 的可能性:

php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"
Run Code Online (Sandbox Code Playgroud)


Ren*_*haf 6

从 xdebug 3 开始,您可以使用以下命令行:

php -r "xdebug_info();"
Run Code Online (Sandbox Code Playgroud)

它将显示有关您的 xdebug 安装的有用信息。


cmb*_*b28 5

您可以运行此小php代码

<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

复制整个输出页面,并将其粘贴到此链接中。然后分析。它将显示是否已安装Xdebug。它将给出完成安装的说明。