如果没有安装文本编辑或IDE,是它可以测试,如果Xdebug的工作,也就是说,如果它可以调试PHP代码?
只有部分的XDebug中的phpinfo来了()如下:
其他.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()函数任何地方提及。
没有实际做一些调试,我想你不能肯定是一个调试器正在工作。
但是,你可以相当肯定 - 我想应该假设,如果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的安装。 如果不是,那不是。
跑
php -m -c
在你的终端,然后寻找[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
试试如下,应返回“存在”或“不存在”:
<?php
echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
一个痛苦的几乎24小时长远来看试图让Xdebug的使用Netbeans 8.0.2工作后,我已经找到了解决方案,希望可以为所有的Ubuntu和Ubuntu相关栈工作。
问题1号:PHP和Xdebug版本必须兼容
有时候,如果您运行的是Linux安装和apt-get安装了XDebug,它不会让你正确的XDebug版本。 就我而言,我有最新的PHP版本,但一个老版本的XDebug。 那一定是因为我目前的Xubuntu的版本。 软件版本的依赖库,这取决于你所运行的操作系统版本。
解决方案:PHP有一个叫做PECL进行拓展经理。 按照指示在这里有它运行起来。 首先,如在评论中指出的一员,你应该为了得到PECL工作安装PHP的开发包:
sudo apt-get install php5-dev
然后,使用PECL,你就可以安装Xdebug的最新稳定版本:
sudo pecl install php5-xdebug
一旦你做到这一点,Xdebug的正确版本将安装但不准备使用。 在此之后,你需要启用它。 我已经看到了如何做到这一点的许多建议,但问题的事实是,PHP需要一些模块都启用客户端和服务器,在这种情况下的Apache。 看来,这里最好的做法是使用内置的实现模块,称为php5enmod的方法。 用法说明这里 。
问题号2:正确地启用模块
首先,你需要去在/ etc / php5的文件夹内。 在那里,你会发现3个文件夹,的Apache2,CLI和mods_available。 该mods_available文件夹包含文本文件的说明激活一个给定的模块。 命名惯例是[模块]的.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脚本,并运行它。 这是你应该看到,如果一切赖特:
如果你看到这一点,阿帕奇还装载该模块,你可能准备好了。 现在让我们来看看NetBeans将正确调试。 创建一个非常简单的脚本,添加一些变量,给他们的价值观,并在其上设置一个断点。 现在,按CTRL + F5,点击“步骤”您的调试器面板上,看看你得到的东西是这样的:
记住要检查Netbeans的配置调试,在工具/选项/ PHP。 它应该是这个样子:
我希望这揭示了这个相当模糊,混淆问题的一些情况。
最好的祝愿!
你可以运行这个小php
代码
<?php
phpinfo();
?>
复制整个输出页面,将其粘贴在这个环节 。 然后分析。 它会显示是否安装或不Xdebug的。 它会给提示完成安装。
如果您使用的是Eclipse,那么请注意,XDebug的模式下运行,而魔术不断__FILE__总是被评估为:
xdebug://debug-eval
所以,如果你的会话下的XDebug以下检查将返回true:
$is_xdebug = false !== strpos(__FILE__,'xdebug'); // true while on XDebug
在你的问题你提到你的phpinfo中指出阿帕奇加载的XDebug的配置在/etc/php5/apache2/conf.d/xdebug.ini在许多的在线说明你可能会注意到,他们要求你把Xdebug的配置在PHP的.ini(这是我做的)但是,如果配置设置为/etc/php5/apache2/conf.d/xdebug.ini,那么你应该从/ etc / PHP5 / Apache2的了[XDebug的]配置设置/php.ini并把它放在/etc/php5/apache2/conf.d/xdebug.ini来代替。 有一次,我从/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删除此。
然后做:
须藤服务的Apache2重启
那么它应该工作!
只是延长的Ksar答案,并提供了可能性,以检查命令行的XDebug:
php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"