PHPのデバッグ方法を分かりやすく解説
PHPのデバック方法を分かりやすく解説していきます。
「var_dump」で画面に出力する方法ではなく、エラー内容や処理の流れをログファイルに出力する方法になります。
ログファイルに出力する事で、実装した処理が正常に動作しているか確認できたり、不具合の原因を特定できたりします。
準備
まずは下記のファイルを用意します。
・sample.php・・・・・・デバッグをしたいファイル
・functions.php・・・・・php.iniの設定やデバッグ関数を記述するファイル
デバッグをしたいファイルの上部でfunctions.php を読み込んでおきます。
// functions.php を読み込み
require('functions.php');
ログの出力設定
functions.phpにログの設定を記述します。
ini_setとはPHPの設定をいじることができる関数です。
出力するエラーレベルに関しては公式ドキュメントを参考にして下さい。
https://www.php.net/manual/ja/function.error-reporting.php
//================================
// ログ
//================================
//エラー表示/非表示の設定
ini_set('log_errors','on');
//エラーレベルを設定
ini_set('error_reporting', E_ALL);
//ログの出力ファイルを指定
ini_set('error_log','php.log');
とりあえずこれだけでもエラーがあった場合にログファイルが自動生成され、原因をつきとめる事ができます。
例えばこんな感じです。
下記の場合だと「Undefined variable」なので、変数が定義されていないというエラーになります。
[03-Jan-2020 17:38:07 Asia/Tokyo] PHP Notice: Undefined variable: options in /Users/ray/Dropbox/05_mamp/htdocs/example/functions.php on line 195
[03-Jan-2020 17:38:07 Asia/Tokyo] PHP Notice: Undefined variable: mail in /Users/ryu/Dropbox/05_mamp/htdocs/example/functions.php on line 73
よくあるエラーメッセージ
エラーメッセージ | 説明 |
---|---|
Fatal error: Call to undefined function | 定義していない関数を呼び出しています。 |
Parse error: syntax error, unexpected end of file, expecting ‘,’ or ‘;’ | あるべき文字が抜けています。 |
Fatal error: [] operator not supported for strings | 文字型の変数を配列として扱おうとしています。 |
Warning: Missing argument 2 for (関数名) | 関数に必要な引数が省略されています。 |
デバッグの方法
function.phpにデバッグ関数を記述。
//================================
// デバッグ
//================================
//デバッグフラグ
$debug_flg = true;
//デバッグログ関数
function debug($str){
global $debug_flg;
if(!empty($debug_flg)){
error_log('デバッグ:'.$str);
}
}
例えばこのようなプログラムがあったとします。
if(true){
//処理A
debug("処理Aが成功しました");
//処理B
debug("処理Bが成功しました");
}else{
//処理C
debug("処理Cが成功しました");
//処理D
debug("処理Dが成功しました");
}
debug("処理終了");
php.logにはこのように出力されプログラムの処理を追う事ができます。
[03-Jan-2020 18:49:16 Asia/Tokyo] デバッグ:処理Aが成功しました
[03-Jan-2020 18:49:16 Asia/Tokyo] デバッグ:処理Bが成功しました
[03-Jan-2020 18:49:16 Asia/Tokyo] デバッグ:処理終了
変数の値を分かりやすくログに表示する方法
print_r とは、指定した変数に関する情報を解りやすく出力する関数です。
第二引数にtrueを入れる事で戻り値として結果を表示させる事ができます。
$array = array(
'野菜' => 'キャベツ',
'果物' => 'りんご',
'飲み物' => 'コーラ',
);
debug(print_r($array,true));
php.logではこのように分かりやすく表示されます。
DB接続時や、セッションの中身の確認する際に便利です。
[03-Jan-2020 19:03:09 Asia/Tokyo] デバッグ:Array
(
[野菜] => キャベツ
[果物] => りんご
[飲み物] => コーラ
)
以上PHPのデバッグ方法に関する解説でした。
記載内容に誤りがあったら、ご指摘いただけると助かります。
Author And Source
この問題について(PHPのデバッグ方法を分かりやすく解説), 我々は、より多くの情報をここで見つけました https://qiita.com/ray_20500/items/a275ccba2a5647a37012著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .