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 をセットアップすると、JavaScript を直接デバッグするのと同じように、Firebug のコンソールで PHP スクリプトの警告やエラーを取得できます。
インストール
まず、Firefox、Firebug、FirePHP をインストールする必要があります。最新バージョンの FireFox 19.0.2、Firebug 1.11.2、および FirePHP 0.7.1 を使用することをお勧めします。
> http://www.firephp.org/DownloadRelease/FirePHPLibrary-FirePHPCore-0.3.2
> ファイル FirePHPLibrary-FirePHPCore-0.3.2
FirePHPLibrary-FirePHPCore-0.3.2: ZIP アーカイブ データ、抽出するには少なくとも v2.0
> FirePHPLibrary-FirePHPCore-0.3.2を解凍します
~/public_html/FirePHPCore-0.3.2> ls -R
.:
変更履歴のクレジット FirePHPCore-0.3.2 FirePHPLibrary-FirePHPCore-0.3.2 lib README テスト
./FirePHPCore-0.3.2:
変更履歴クレジット ライブラリの README
./FirePHPCore-0.3.2/lib:
ファイアPHPコア
./FirePHPCore-0.3.2/lib/FirePHPCore: # PHP5+ の場合、必要なのは fb.php と FirePHP.class.php の 2 つのファイルのみです
fb.php fb.php4 FirePHP.class.php FirePHP.class.php4 ライセンス
./lib:
ファイアPHPコア
./lib/FirePHPCore:
fb.php fb.php4 FirePHP.class.php FirePHP.class.php4 ライセンス
./test: # 解凍したディレクトリにFirePHPのテスト用のテストディレクトリを作成します
firephptest.php テスト
次に、テスト ディレクトリにテスト ケース firephptest.php を作成します。
ログ: 配列('0'=>'1', '1'=>'2', '2'=> ... )
log: Label: array('0'=>'1', '1'=>'2', '2'=> ... ) Firebug を通じて HTTP リクエストの応答ヘッダーの詳細を確認できます。ネットワークパネル:
接続が終了しました
コンテンツタイプ charset=utf-8
日付 2013 年 3 月 29 日金曜日 01:39:32 GMT
サーバーnginx
転送エンコーディングのチャンク化
X-Wf-1-1-1-1 142|[{"タイプ":"LOG","ファイル":"/home/zhanhailiang/public_html/FirePHPCore-0.3.2/test/firephptest.php","行":"8"},["1","2","hello world",["1"]]]|
X-Wf-1-1-1-2 158|[{"タイプ":"ログ","ラベル":"ラベル","ファイル":"/home/zhanhailiang/public_html/FirePHPCore-0.3.2/test /firephptest.php","行":"9"},["1","2","hello world",["1"]]]|
X-Wf-1-インデックス 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 の開始オプションと終了オプションを分析すると、次の場合の応答情報に X-Wf-*** が存在しないことがわかります。 FirePHPは終了しました。 HTTP リクエストを分析することで見つけることができます
FirePHP がオフの場合、HTTP リクエスト ヘッダーは次のようになります:
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
キャッシュ制御の最大期間=0
接続キープアライブ
itravel.smartcom.cc をホストします
ユーザー エージェント Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP がオンになっている場合、HTTP リクエスト ヘッダーは次のようになります:
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
キャッシュ制御ノーキャッシュ
接続キープアライブ
itravel.smartcom.cc をホストします
プラグマノーキャッシュ
ユーザーエージェント Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.7.1
x-insight activate FirePHP がオンになっているときの HTTP リクエスト ヘッダーの違いは次のとおりです。
プラグマノーキャッシュ
ユーザーエージェント 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 がインストールされているかどうかを判断していることがわかります。
* クライアントに FirePHP がインストールされているか確認してください
*
* @return boolean
*/
パブリック関数 detectClientExtension()
{
// User-Agent ヘッダーを介して FirePHP がクライアントにインストールされているかどうかを確認します
If (@preg_match_all('/sFirePHP/([.d]*)s?/si',$this->getUserAgent(),$m) &&
version_compare($m[1][0],'0.0.6','>=')) {
true を返します;
} 他
// X-FirePHP-Version ヘッダーを介して FirePHP がクライアントにインストールされているかどうかを確認します
If (@preg_match_all('/^([.d]*)$/si',$this->getRequestHeader("X-FirePHP-Version"),$m) &&
version_compare($m[1][0],'0.0.6','>=')) {
true を返します;
}
false を返す;
}では、x-insight リクエスト ヘッダーは役に立つのでしょうか? FirePHPCore のコードをすべて見たところ、x-insight の使用は見当たりませんでした。したがって、x-insight は実際には使用されないのだと思います。私の推測を検証するために、FF 拡張 HTTPRequester ツールを使用して、x-insight リクエスト ヘッダーなしで UA:FirePHP の構築をシミュレートし、応答ヘッダーが x-insight リクエストを含む応答ヘッダーと一致するかどうかをテストしました。
http://itravel.smartcom.cc/~zhanhailiang/FirePHPCore-0.3.2/test/firephptest.php を取得します
-- 応答 --
サーバー: nginx
日付: 2013 年 3 月 29 日金曜日 02:34:54 GMT
コンテンツタイプ: text/html;
転送エンコーディング: チャンク化
接続: 閉じる
X-Wf-1-1-1-1: 142|[{"タイプ":"LOG","ファイル":"/home/zhanhailiang/public_html/FirePHPCore-0.3.2/test/firephptest.php","行":"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|[{"タイプ":"ログ","ラベル":"ラベル","ファイル":"/home/zhanhailiang/public_html/FirePHPCore-0.3.2/ test/firephptest.php","行":"9"},["1","2","hello world",["1"]]]|
X-Wf-1-インデックス: 2
コンテンツエンコーディング: gzip