在friendfeed上找到的了这个名为FirePHP的Firefox插件,是基于Firebug的一个扩展,可以用来在Firebug的console中方便的输出php的调试信息又不影响php程序的正常运行。实际上这东东出来的时间也不短了,只是以前没试用过,现在把玩了一会也挺有趣:
Http://www.firephp.org/
FirePHP的php调试信息都是通过在http头里面添加X-FirePHP-Data信息串来标识,不会直接输出到页面上,这样也就避免对php正常输出产生影响。可以输出的调试信息类型如下:
* 正常的调试字符串,类型有LOG,INFO,WARN,ERROR几种
* 数组array
* object
* 异常Exception
* SQL返回数据
* http header
通过使用Firephp你可以在Firebug的Console栏中看到要调试的数据,而不影响php程序的正常执行,所以说,这东西对于Ajax开发是很有帮助的!
如何使用:http://www.blankyao.cn/blog/php-firephp-ajax.html
firebug firecookie ietab httpfox
下面一起来看下Firephp的使用方法。
第一步:安装
1.如果你的FireFox没有Firebug这个插件的话,首先要安装Firebug这个插件,可以到其官方地址去下载:http://www.getfirebug.com/
2.安装Firephp,官方地址:http://www.firephp.org/
3.下载Firephp的php文件。并放在合适的目录。
第二步:
包含fb.php,根据你放置的Firephp文件的地址来包含fb.php,比如:
require(’FirePHPCore/fb.php’)
第三步:
打开输出缓冲(因为Firephp主要用到的是header函数),有如下三种方法:
在程序的前面加上ob_start()
修改php.ini 将output_buffering设为1或者on
修改apache的设置,在配置文件中加上php_flag output_buffering on
第四步:开始调试:
可以调试输出以下数据类型:
字符串,可以分为LOG,INFO,WARN,ERROR四种
Object或者Array
通过sql查询返回的数据
抛出的异常信息
服务器返回的信息(不输出在console中,而是NET中
如果你感觉还不错的话,可以安装后运行以下程序看下结果:
$var = array('a'=>'pizza', 'b'=>'cookies', 'c'=>'celery');
fb($var);
fb($var, "An array");
fb($var, FirePHP::WARN);
fb($var, FirePHP::INFO);
fb($var, 'An array with an Error type', FirePHP::ERROR);
你也可以使用FirePHP来跟踪你程序的执行情况:通过使用FirePHP::TRACE常量,你可以在 fb被调用的地方查看行数、类名和方法名
function hello() {
fb('Hello World!', FirePHP::TRACE);
}
function greet() {
hello();
}
greet();
产生的输出如下:
这个跟踪功能可以完美的调试更复杂的代码,让你精确的知道你的方法是在哪里被调用的。
当然,别忘了你需要在你代码发布之前移除你的调试语句。
参考:http://blog.csdn.net/leijuly/archive/2009/05/31/4227613.aspx
自己测试了下,是Ok的,以后就可以用它来调试PHP变量的哇,测试代码如下:
firephp的Consol输出结果如下:
http://test3.qq.com/firephp_test3.php
2 SQL queries took 0.06 seconds
SQL Statement Time Result
SELECT * FROM Foo 0.02 array('0'=>' row1 ', '1'=>' row2 ')
SELECT * FROM Bar 0.04 array('0'=>' row1 ', '1'=>' row2 ')
自己试了下也是Ok的,如下:
name
jack lixu
echo xxd
当firefox升级到firefox6后,这个firephp和firebug匹配上有些问题,只能开启一次,再刷新后控制台就给屏蔽了,点再开启也不行,最后再次升级了firebug插件才Ok,这点要注意。
以上的输出截图,注意table和log,以及info是很适用的输出模型:
特别注意,如出现:
其中某个包含文件中如,password.php,最后两行,vi能看到一行空输出,91行:
90 ?>
91
这儿有一行空输出,一般是看不见的。
这儿有空格输出,于是出现了报错:
Fatal error: Uncaught exception 'Exception' with message 'Headers already sent in /data/home/jackxiang/public_html/pms_proj/trunk/php/lib/password.php on line 92. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.' in /data/home/admin/libs/FirePHPCore/FirePHP.class.php on line 1178
这儿得用到前面的:
第三步:
打开输出缓冲(因为Firephp主要用到的是header函数),有如下三种方法:
在程序的前面加上ob_start()
修改php.ini 将output_buffering设为1或者on
修改apache的设置,在配置文件中加上php_flag output_buffering on
其实就是在password.php中输出前加入,ob_start(); #开启缓冲,然后在打firephp变量前加入:
ob_clean(); #关闭缓冲
分别如下:password.php,
89 ob_start();
90 ?>
91
在打印变量处如,BuildProcess.php中:
于是出现如下结果:
其实这个为何要这样加,或者就是头一个文件里里加的原因请看:http://wyllife.blog.163.com/blog/static/41163901201153113512946/
Http://www.firephp.org/
FirePHP的php调试信息都是通过在http头里面添加X-FirePHP-Data信息串来标识,不会直接输出到页面上,这样也就避免对php正常输出产生影响。可以输出的调试信息类型如下:
* 正常的调试字符串,类型有LOG,INFO,WARN,ERROR几种
* 数组array
* object
* 异常Exception
* SQL返回数据
* http header
通过使用Firephp你可以在Firebug的Console栏中看到要调试的数据,而不影响php程序的正常执行,所以说,这东西对于Ajax开发是很有帮助的!
如何使用:http://www.blankyao.cn/blog/php-firephp-ajax.html
<?php
require('FirePHPCore/fb.php');
//echo 'FirePHP测试';
//echo "hello the world!";
fb('Hello World'); /* Defaults to FirePHP::LOG */
fb('Log message' ,FirePHP::LOG);
fb('Info message' ,FirePHP::INFO);
fb('Warn message' ,FirePHP::WARN);
fb('Error message',FirePHP::ERROR);
fb('Message with label','Label',FirePHP::LOG);
fb(array('key1'=>'val1',
'key2'=>array(array('v1','v2'),'v3')),
'TestArray',FirePHP::LOG);
function test($Arg1) {
throw new Exception('Test Exception');
}
try {
test(array('Hello'=>'World'));
} catch(Exception $e) {
/* Log exception including stack trace & variables */
fb($e);
}
fb(array('2 SQL queries took 0.06 seconds',array(
array('SQL Statement','Time','Result'),
array('SELECT * FROM Foo','0.02',array('row1','row2')),
array('SELECT * FROM Bar','0.04',array('row1','row2'))
)),FirePHP::TABLE);
?>
require('FirePHPCore/fb.php');
//echo 'FirePHP测试';
//echo "hello the world!";
fb('Hello World'); /* Defaults to FirePHP::LOG */
fb('Log message' ,FirePHP::LOG);
fb('Info message' ,FirePHP::INFO);
fb('Warn message' ,FirePHP::WARN);
fb('Error message',FirePHP::ERROR);
fb('Message with label','Label',FirePHP::LOG);
fb(array('key1'=>'val1',
'key2'=>array(array('v1','v2'),'v3')),
'TestArray',FirePHP::LOG);
function test($Arg1) {
throw new Exception('Test Exception');
}
try {
test(array('Hello'=>'World'));
} catch(Exception $e) {
/* Log exception including stack trace & variables */
fb($e);
}
fb(array('2 SQL queries took 0.06 seconds',array(
array('SQL Statement','Time','Result'),
array('SELECT * FROM Foo','0.02',array('row1','row2')),
array('SELECT * FROM Bar','0.04',array('row1','row2'))
)),FirePHP::TABLE);
?>
firebug firecookie ietab httpfox
下面一起来看下Firephp的使用方法。
第一步:安装
1.如果你的FireFox没有Firebug这个插件的话,首先要安装Firebug这个插件,可以到其官方地址去下载:http://www.getfirebug.com/
2.安装Firephp,官方地址:http://www.firephp.org/
3.下载Firephp的php文件。并放在合适的目录。
第二步:
包含fb.php,根据你放置的Firephp文件的地址来包含fb.php,比如:
require(’FirePHPCore/fb.php’)
第三步:
打开输出缓冲(因为Firephp主要用到的是header函数),有如下三种方法:
在程序的前面加上ob_start()
修改php.ini 将output_buffering设为1或者on
修改apache的设置,在配置文件中加上php_flag output_buffering on
第四步:开始调试:
可以调试输出以下数据类型:
字符串,可以分为LOG,INFO,WARN,ERROR四种
Object或者Array
通过sql查询返回的数据
抛出的异常信息
服务器返回的信息(不输出在console中,而是NET中
如果你感觉还不错的话,可以安装后运行以下程序看下结果:
$var = array('a'=>'pizza', 'b'=>'cookies', 'c'=>'celery');
fb($var);
fb($var, "An array");
fb($var, FirePHP::WARN);
fb($var, FirePHP::INFO);
fb($var, 'An array with an Error type', FirePHP::ERROR);
你也可以使用FirePHP来跟踪你程序的执行情况:通过使用FirePHP::TRACE常量,你可以在 fb被调用的地方查看行数、类名和方法名
function hello() {
fb('Hello World!', FirePHP::TRACE);
}
function greet() {
hello();
}
greet();
产生的输出如下:
这个跟踪功能可以完美的调试更复杂的代码,让你精确的知道你的方法是在哪里被调用的。
当然,别忘了你需要在你代码发布之前移除你的调试语句。
参考:http://blog.csdn.net/leijuly/archive/2009/05/31/4227613.aspx
自己测试了下,是Ok的,以后就可以用它来调试PHP变量的哇,测试代码如下:
firephp的Consol输出结果如下:
http://test3.qq.com/firephp_test3.php
2 SQL queries took 0.06 seconds
SQL Statement Time Result
SELECT * FROM Foo 0.02 array('0'=>' row1 ', '1'=>' row2 ')
SELECT * FROM Bar 0.04 array('0'=>' row1 ', '1'=>' row2 ')
自己试了下也是Ok的,如下:
name
jack lixu
echo xxd
当firefox升级到firefox6后,这个firephp和firebug匹配上有些问题,只能开启一次,再刷新后控制台就给屏蔽了,点再开启也不行,最后再次升级了firebug插件才Ok,这点要注意。
以上的输出截图,注意table和log,以及info是很适用的输出模型:
特别注意,如出现:
其中某个包含文件中如,password.php,最后两行,vi能看到一行空输出,91行:
90 ?>
91
这儿有一行空输出,一般是看不见的。
这儿有空格输出,于是出现了报错:
Fatal error: Uncaught exception 'Exception' with message 'Headers already sent in /data/home/jackxiang/public_html/pms_proj/trunk/php/lib/password.php on line 92. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.' in /data/home/admin/libs/FirePHPCore/FirePHP.class.php on line 1178
这儿得用到前面的:
第三步:
打开输出缓冲(因为Firephp主要用到的是header函数),有如下三种方法:
在程序的前面加上ob_start()
修改php.ini 将output_buffering设为1或者on
修改apache的设置,在配置文件中加上php_flag output_buffering on
其实就是在password.php中输出前加入,ob_start(); #开启缓冲,然后在打firephp变量前加入:
ob_clean(); #关闭缓冲
分别如下:password.php,
89 ob_start();
90 ?>
91
在打印变量处如,BuildProcess.php中:
于是出现如下结果:
其实这个为何要这样加,或者就是头一个文件里里加的原因请看:http://wyllife.blog.163.com/blog/static/41163901201153113512946/
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1117/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2011-9-21 21:28
评论列表