TOP ▲
itcore TOP
> TIPS
> php_debug.php
タグ:php デバッグ PHP 自分のPC(オフィス)からのみデバッグ情報を出力する。| itcore 2017年
アクセス元IP
現在のアクセス元IP: 10.1.3.27
直書き方式
デバッグ文とわかるようにインデントせず、最初のカラムから書く。
<?php
if ("10.1.3.27" == $_SERVER['REMOTE_ADDR']) {
echo "[" . __FILE__ . " " . __LINE__ . "]<br>\n";
echo "IP=" . $_SERVER['REMOTE_ADDR'] . "<br>\n";
echo "sql=" . $sql . "<br>\n";
echo "[a_data]<br>\n";
print_r($a_data) . "<br>\n";
}
?>
関数方式
デバッグ用の関数インクルードファイル
# vi debug.inc
<?php
// デバッグ出力 テキスト 画面、ログ出力
function uDebug($data) {
// 開発者の出口IPを指定する。
if ("10.1.3.27" != $_SERVER["REMOTE_ADDR"]) return; // 通常のアクセスはデバッグ出力しない
// 画面に表示
echo "<font color=blue>[debug] " . nl2br(htmlspecialchars($data)) . "</font><br>\n";
// ログへ出力
date_default_timezone_set('Asia/Tokyo');
$dt = date("Y-m-d H:i:s"); $today = date("Ymd");
file_put_contents("/tmp/$today-debug.log", "$dt $data\n", FILE_APPEND);
}
// デバッグ出力 変数名+値
function uDebug2($arr_name, $arr) {
$data = "$arr_name=";
if (is_array($arr) || is_object($arr)) {
$data .= uDebugArray($arr);
} else {
$data .= "$arr";
}
uDebug($data);
}
// 配列, オブジェクト
function uDebugArray($arr) {
$data = "(";
foreach ($arr as $key => $value) {
if ("(" != $data) $data .= " ";
if (is_array($value) || is_object($value)) {
$data .= "$key=" . uDebugArray($value);
} else {
$data .= "$key=$value";
}
}
$data .= ")";
return $data;
}
?>
デバッグ対象のプログラムに埋め込む。
# test.php
<?php
include_once "debug.inc";
uDebug(__FILE__ . ":" . __LINE__ . " メッセージ"); //ファイルフルパス名:行番号 メッセージ
uDebug2("arr", $arr);
?>