FirePHP调试指南_PHP教程
如果Web前端调试来说,Firebug是不可或缺好的调试工具,它能够监控网络、监测css、js错误,查看DOM节点,查看当前页面获得了几个A,等等功能。
PHP同样也有配合firebug这么好用的工具,那就是FirePHP。
FirePHP是一个附加在 firebug 上面的插件,用来调试PHP,操作过程很简单。在PHP端使用FirePHP提供的PHP日志记录类库来输出调试信息, 在浏览器端使用 Firebug + FirePHP 来接收查看输出的调试信息,这些调试信息会直接附加在返回的HTTP头信息里,这些信息不会被浏览器直接显示,只会在firephp 获取显示,有效的达到了调试和页面显示都不冲突的问题。(必须使用firefox浏览器)
FirePHP调试原理
通过服务端库FirePHPCore,和基于Firebug的插件FirePHP,PHP脚本可以通过HTTP请求头发送调试信息到浏览器。一旦你设置开启FirePHP,你可以在Firebug的控制台获得PHP脚本警告和错误,就感觉像直接调试JavaScript一样。
安装
首先需要安装Firefox,Firebug,FirePHP,建议使用最新版本FireFox 19.0.2,Firebug 1.11.2,FirePHP 0.7.1;
其次下载服务器端库FirePHPCore:
> wget http://www.firephp.org/DownloadRelease/FirePHPLibrary-FirePHPCore-0.3.2
> file FirePHPLibrary-FirePHPCore-0.3.2
FirePHPLibrary-FirePHPCore-0.3.2: Zip archive data, at least v2.0 to extract
> unzip FirePHPLibrary-FirePHPCore-0.3.2
~/public_html/FirePHPCore-0.3.2> ls -R
.:
CHANGELOG CREDITS FirePHPCore-0.3.2 FirePHPLibrary-FirePHPCore-0.3.2 lib README test
./FirePHPCore-0.3.2:
CHANGELOG CREDITS lib README
./FirePHPCore-0.3.2/lib:
FirePHPCore
./FirePHPCore-0.3.2/lib/FirePHPCore: # 对于PHP5+只需用于fb.php,FirePHP.class.php这两个文件
fb.php fb.php4 FirePHP.class.php FirePHP.class.php4 LICENSE
./lib:
FirePHPCore
./lib/FirePHPCore:
fb.php fb.php4 FirePHP.class.php FirePHP.class.php4 LICENSE
./test: # 自已在解压缩目录下创建test目录用于测试FirePHP
firephptest.php测试
接下来 在test目录下创建测试用例firephptest.php:
require_once '../lib/FirePHPCore/fb.php';
$firephp = FirePHP::getInstance(true);
$var = array(1, 2, 'hello world', array(1));
fb($var);
fb($var, 'Label');最后在浏览器访问www.domain.com/~zhanhailiang/FirePHPCore-0.3.2/test/firephptest.php,可以在控制台上看到如下输出:
http://itravel.smartcom.cc/~zhanhailiang/FirePHPCore-0.3.2/test/firephptest.php
log: array('0'=>'1', '1'=>'2', '2'=> ... )
log: Label: array('0'=>'1', '1'=>'2', '2'=> ... )通过Firebug网络面板可以看到HTTP请求的响应头详情:
Connection close
Content-Encoding gzip
Content-Type text/html; charset=utf-8
Date Fri, 29 Mar 2013 01:39:32 GMT
Server nginx
Transfer-Encoding chunked
X-Wf-1-1-1-1 142|[{"Type":"LOG","File":"\/home\/zhanhailiang\/public_html\/FirePHPCore-0.3.2\/test\/firephptest.php","Line":"8"},["1","2","hello world",["1"]]]|
X-Wf-1-1-1-2 158|[{"Type":"LOG","Label":"Label","File":"\/home\/zhanhailiang\/public_html\/FirePHPCore-0.3.2\/test\/firephptest.php","Line":"9"},["1","2","hello world",["1"]]]|
X-Wf-1-Index 2
X-Wf-1-Plugin-1 http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3
X-Wf-1-Structure-1 http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1
X-Wf-Protocol-1 http://meta.wildfirehq.org/Protocol/JsonStream/0.2通过分析FirePHP开启和关闭选项,可以发现当FirePHP关闭时响应信息里是不存在X-Wf-***。通过分析HTTP请求可以发现,
当关闭FirePHP,HTTP请求头为:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Cache-Control max-age=0
Connection keep-alive
Host itravel.smartcom.cc
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0当开启FirePHP时,HTTP请求头为:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Cache-Control no-cache
Connection keep-alive
Host itravel.smartcom.cc
Pragma no-cache
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.7.1
x-insight activate可以看出开启FirePHP时HTTP请求头区别在于:
Pragma no-cache
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.7.1
x-insight activate通过查看FirePHP.class.php源码可以看到FirePHPCore通过UA来判断客户端是否安装FirePHP:
/**
* Check if FirePHP is installed on client
*
* @return boolean
*/
public function detectClientExtension()
{
// Check if FirePHP is installed on client via User-Agent header
if (@preg_match_all('/\sFirePHP\/([\.\d]*)\s?/si',$this->getUserAgent(),$m) &&
version_compare($m[1][0],'0.0.6','>=')) {
return true;
} else
// Check if FirePHP is installed on client via X-FirePHP-Version header
if (@preg_match_all('/^([\.\d]*)$/si',$this->getRequestHeader("X-FirePHP-Version"),$m) &&
version_compare($m[1][0],'0.0.6','>=')) {
return true;
}
return false;
}那么x-insight请求头有没有用呢?查看FirePHPCore里的所有代码,并没有看到x-insight的用途,所以我猜测x-insight并没有实际用途。为了验证我的猜测,使用FF扩展HTTPRequester工具模拟构造一个只有UA:FirePHP,而没有x-insight请求头,测试下是否响应头和包含x-insight请求的响应头是否一致:
GET http://itravel.smartcom.cc/~zhanhailiang/FirePHPCore-0.3.2/test/firephptest.php
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.7.1
-- response --
200 OK
Server: nginx
Date: Fri, 29 Mar 2013 02:34:54 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
X-Wf-1-1-1-1: 142|[{"Type":"LOG","File":"\/home\/zhanhailiang\/public_html\/FirePHPCore-0.3.2\/test\/firephptest.php","Line":"8"},["1","2","hello world",["1"]]]|
X-Wf-Protocol-1: http://meta.wildfirehq.org/Protocol/JsonStream/0.2
X-Wf-1-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3
X-Wf-1-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1
X-Wf-1-1-1-2: 158|[{"Type":"LOG","Label":"Label","File":"\/home\/zhanhailiang\/public_html\/FirePHPCore-0.3.2\/test\/firephptest.php","Line":"9"},["1","2","hello world",["1"]]]|
X-Wf-1-Index: 2
Content-Encoding: gzip

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在VSCode中编写JavaScript代码的最佳实践包括:1)安装Prettier、ESLint和JavaScript(ES6)codesnippets扩展,2)配置launch.json文件进行调试,3)使用现代JavaScript特性和优化循环来提高性能。通过这些设置和技巧,你可以在VSCode中更高效地开发JavaScript代码。

在VSCode中查看Git历史记录和更改的方法包括:1.打开VSCode,确保项目已初始化Git仓库。2.点击左侧边栏“源代码管理”图标。3.选择“...(更多选项)”并点击“Git:ShowGitOutput”。4.查看提交历史和文件更改。5.右键文件选择“Git:ShowFileHistory”查看文件更改历史。通过这些步骤,你可以在VSCode中高效地查看Git历史记录和更改,提升开发效率。

在VSCode中处理Git提交冲突可以通过以下步骤高效解决:1.识别冲突文件,VSCode会用红色高亮显示。2.手动编辑冲突标记间的代码,决定保留、删除或合并。3.保持分支小而专注,减少冲突发生。4.使用GitLens扩展理解代码历史。5.利用VSCode内置Git命令,如gitmerge--abort或gitreset--hard。6.避免依赖自动合并工具,仔细检查合并结果。7.删除所有冲突标记,避免编译错误。通过这些方法和技巧,你可以在VSCode中高效处理Git冲突。

加密抢跑是什么?加密抢跑是如何形成的?如何避免加密抢跑?加密领域的抢跑利用未确认交易获利,借助区块链的透明性。了解交易者、机器人和验证者如何操纵交易排序,其对去中心化金融的影响,以及保护交易的可能方法。下面,脚本之家小编给大家详细介绍下加密抢跑吧!什么是加密领域的抢跑?抢跑长期以来一直是金融市场的问题。它起源于传统金融领域,指的是经纪人或内部人士利用特权信息,在客户之前进行交易。这种行为被认定为不道德且非法,监管机构会对此进行查处和

用户若想追求利润最大化,可以通过收益型稳定币将稳定币的价值最大化。收益型稳定币是指通过DeFi活动、衍生品策略或RWA投资产生收益的资产。目前,这类稳定币占稳定币2400亿美元市值的6%。随着需求的增长,摩根大通认为占比达到50%并非遥不可及。收益稳定币是通过将抵押品存入协议来铸造。存入的资金会用于收益策略的投资,而收益则由持有者共享。这就像一家传统银行将存入的资金贷出,并与储户共享利息,只不过,收益稳定币的利息更高

在VSCode中高效调试Node.js应用的方法包括:1.配置launch.json文件,示例配置为{"version":"0.2.0","configurations":[{"type":"node","request":"launch","name":"LaunchProgram","program&qu

在VSCode中可以使用Git进行代码版本回退。1.使用gitreset--hardHEAD~1回退到上一个版本。2.使用gitreset--hard回退到特定提交。3.使用gitrevert安全回退而不改变历史记录。
