如果没有安装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()中没有提到它。
答案 0 :(得分:74)
如果没有实际进行一些调试,我猜你不能某些调试器工作。
但你可以非常肯定 - 我想人们应该假设,如果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。如果不是,那就不是。
答案 1 :(得分:54)
运行
php -m -c
在您的终端中,然后查找[Zend Modules]
。如果加载它应该在某处!
<强> NB 强>
如果您正在使用Ubuntu,则可能无法在此处显示,因为您需要将/etc/php5/apache2/php.ini
中的xdebug设置添加到/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
答案 2 :(得分:24)
尝试如下,应该返回&#34;存在&#34;或&#34;不存在&#34;:
<?php
echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
答案 3 :(得分:20)
经过近24小时的苦苦尝试使xdebug与Netbeans 8.0.2一起工作后,我找到了一个解决方案,我希望它能适用于所有Ubuntu和Ubuntu相关的堆栈。
问题1:PHP和xdebug版本必须兼容
有时,如果您正在运行Linux安装程序并且apt-get安装xdebug,它将无法为您提供正确的xdebug版本。在我的情况下,我有最新的PHP版本,但旧的xdebug版本。这必须归功于我目前的Xubuntu版本。软件版本依赖于存储库,这取决于您运行的操作系统版本。
解决方案:PHP有一个称为PECL的简洁扩展管理器。按照here给出的说明启动并运行它。 首先,正如评论中的成员所指出的,您应该安装PHP的开发人员包以使PECL工作:
sudo apt-get install php5-dev
然后,使用PECL,您将能够安装xdebug的最新稳定版本:
sudo pecl install php5-xdebug
执行此操作后,将安装正确版本的xdebug但尚未准备好使用。之后,您需要启用它。我已经看到了很多关于如何做的建议,但事实是PHP需要为客户端和服务器启用一些模块,在本例中是Apache。看来这里最好的做法是使用内置的启用模块的方法,称为php5enmod。用法描述为here。
问题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
确保指令 [xdebug] 存在,与上面的示例完全相同。该模块必须工作。事实上,只需复制并粘贴整个代码,你就会成为一个更快乐的人。 :d
注意:zend_extension路径非常重要。在这个例子中,它指向当前版本的PHP引擎,但是您应该首先转到/ usr / lib / php5并确保使用数字命名的文件夹是正确的。将名称调整为您在那里看到的任何内容,当您对其进行调整时,请检查文件夹内部以确保xdebug.so确实存在。应该是,如果你做的一切都是正确的。
现在,在创建了xdebug.ini的情况下,现在可以启用该模块了。为此,请打开控制台并键入:
php5enmod xdebug
如果一切顺利,PHP会创建两个指向此文件的链接,一个位于/etc/php5/apache2/conf.d内,另一个位于/etc/php5/cli/conf.d
内。重新启动Apache服务器并在控制台上输入:
php -v
你应该得到这样的东西:
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
这意味着PHP客户端确实读取了您的xdebug.ini文件并加载了xdebug.so模块。到目前为止一切都很好。
现在在您的Web服务器上的某处创建一个phpinfo脚本,然后运行它。如果一切都变得紧张,你应该看到这一点:
如果你看到这个,Apache也加载了模块,你可能已经准备好了。现在让我们看看Netbeans是否会正确调试。创建一个非常简单的脚本,添加一些变量,为它们赋值,并在它们上设置断点。现在点击CTRL + F5,点击&#34;进入&#34;在你的调试器面板上,看看你是否得到这样的东西:
请记住在tools / options / php下检查Netbeans配置以进行调试。看起来应该是这样的:
我希望这可以解释这个相当模糊,令人困惑的问题。
祝福!
答案 4 :(得分:4)
答案 5 :(得分:2)
如果您使用的是 Eclipse ,请注意在XDebug模式下运行时,魔法常量__FILE__将始终评估为:
$is_xdebug = false !== strpos(__FILE__,'xdebug'); // true while on XDebug
如果您的会话在XDebug下,则以下检查将返回 true :
{{1}}
答案 6 :(得分:1)
在您的问题中,您提到您的phpinfo声明apache正在/etc/php5/apache2/conf.d/xdebug.ini中加载xdebug的配置 在网上的许多说明中你可能会注意到,如果配置设置为/etc/php5/apache2/conf.d/xdebug,他们会要求你把xdebug配置放在php.ini中(这就是我所做的)。但是,如果配置设置为/etc/php5/apache2/conf.d/xdebug。 ini,然后你应该从/etc/php5/apache2/php.ini中删除[XDebug]配置设置并将它放在/etc/php5/apache2/conf.d/xdebug.ini INSTEAD中。一旦我从/etc/php5/apache2/php.ini中删除并放入/etc/php5/apache2/conf.d/xdebug.ini,然后重新启动apache,它就可以了!!
因此,在/etc/php5/apache2/conf.d/xdebug.ini中,输入以下内容:
[XDebug]
zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/paul/tmp"
xdebug.remote_host="localhost"
xdebug.remote_handler="dbgp";
xdebug.idekey="phpstorm_xdebug"
然后将它从/etc/php5/apache2/php.ini中移除,如果你也把它放在那里。
然后做:
sudo service apache2 restart
然后它应该工作!!!
答案 7 :(得分:1)
只需扩展KsaR答案,并提供从命令行检查xdebug的可能性:
NULLIF
答案 8 :(得分:0)
从xdebug 3开始,您可以使用以下命令行:
php -r "xdebug_info();"
它将显示有关xdebug安装的有用信息。
答案 9 :(得分:0)
请注意 xDebug 3 的配置选项 have changed。 PhpStorm 手册:Configure xDebug 也很好地解释了它(它带有一个正在上传的验证器脚本)。 在弄乱了无法配置的 PECL 版本后,答案是:
su
dnf remove php-xdebug
dnf install php-devel
cd /usr/src
wget https://xdebug.org/files/xdebug-3.0.4.tgz
tar -xvzf xdebug-3.0.4.tgz
cd xdebug-3.0.4/
phpize
./configure --enable-xdebug
make
make install
xDebug 3 使用这样的配置(注意 [xdebug]
部分):
; Enable xdebug extension module
zend_extension=xdebug.so
[xdebug]
xdebug.mode=debug
xdebug.client_host=localhost
xdebug.client_port=9003
这两个文件中的内容:
nano /etc/php-cli.d/xdebug.ini
nano /etc/php.d/xdebug.ini
然后可以允许网络连接并重新加载 INI:
setsebool -P httpd_can_network_connect 1
systemctl restart php-fpm.service
最后:
php -r "xdebug_info();"
答案 10 :(得分:0)