itcore TOPTIPSphp_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);
?>