第54回: デバッグ — 原因特定を速くするPHPのデバッグ技法

章: 第6章: 実践運用と成長

「エラーが出ているのに原因がわからない」—— それはデバッグの手順が体系化されていないサインです。

問題と解決策

デバッグで時間を取られる主な原因は、「どこで何が起きているか」を把握するまでに時間がかかることです。コード全体を目で追って「たぶんここかな」と推測するのは非効率です。

PHPには var_dump()print_r()error_log() などのデバッグツールがあります。また、開発環境では display_errors = On にして画面にエラーを表示し、本番環境では display_errors = Offlog_errors = On としてログファイルに記録することがセキュリティ上重要です。

デバッグ手段の比較

手段 用途 本番での使用
var_dump($var) 変数の型・値を詳細確認 ❌ 使用禁止
print_r($var) 配列・オブジェクトを見やすく出力 ❌ 使用禁止
error_log($msg) エラーログに書き込む ✅ 推奨
Xdebug(ツール) ブレークポイント・ステップ実行 ❌ 開発専用

チェックポイント: var_dump() を本番コードに残したままになっていませんか?デバッグコードを本番に流すと、内部情報が漏えいするリスクがあります。デバッグ後は必ず削除しましょう。

コードサンプル


<?php
$data = ['x' => 1, 'y' => 2];
var_dump($data);
error_log('debug: reached here');

まとめ & 次のステップ

  • 開発時は var_dump()print_r() で変数の状態を確認します
  • 本番環境では display_errors = Off にして error_log() でログ記録します
  • php.inierror_reporting = E_ALL で全警告を表示すると問題を早期発見できます
  • Xdebugを使うとブレークポイントを使ったステップ実行が可能になります

次回は テスト基礎 — 変更に強いコードを自動検証する仕組みを学びます。

Related Articles