こんにちは!インストラクターの井上(@InoIno_iesa)です!
プログラミング学習中の方にとってPHPのエラー解決ってなかなか難しいですよね。
それにエラーが長時間解決できないとイライラしてしまい、学習自体がいやになってしまうものです。
ただ、基本的なデバッグ手法やデバッグツールを知っておくだけで、そのイライラを解消できるかもしれません。
そこで今回は、プログラマとして普段行っている基本的なデバッグ方法を紹介していきます。
まずはこれだけ抑えてプログラミングを少しスムーズに行えるようにしましょう。
【関連記事】
デバッグとは
そもそもデバッグという言葉を聞きなれない方もいるかもしれないので簡単に紹介しておきましょう。
デバッグとは作ったプログラムのエラーを解析したり、意図した通りに動いているかを確認することです。
プログラミングしたソースコードのおかしな所などを調べるためのものをデバッグツールと言います。
ここではよく使うデバッグ手法の紹介を行っていきます。
1.ログを確認する
PHPファイルをブラウザで見て、白い画面になったりエラーが出たりしたら、まずはログファイルを確認しましょう。
PHPのエラーメッセージなどが出ていればその場所は原因を特定していきます。
PHPの標準で搭載されているビルトインサーバなどを使用している場合は、サーバを起動しているところでそのまま見ることが可能です。
WEBサーバを起動している場合は各WEBサーバの配置しているログファイルを探しましょう。
エラーはだいたい英単語を拾う形でも原因が特定できますが、よくわからない場合はエラーメッセージの主要と思われる部分をコピーして、ダブルクオーテーションをつけてGoogle検索で調べましょう。
Google検索でダブルクオーテーションで囲まれた範囲は完全一致で検索できるので、まったく同じエラーで困っている人の情報、エラーメッセージ対する対策などを検索しやすくなります。
2.プリントデバッグで状態を出力させる
var_dump()という関数を使うと、変数の中身などを画面に出力してくれます。
下記のソースコードのように変数などに対して使用します。
[php]
<?php
var test_str = "TEST";
var_dump(test_str);
[/php]
WEBサーバのログに出力したり画面に出力したりする方法はいくつかありますが、とりあえずこれとechoだけ覚えておけばよいでしょう。
このような現在の変数などの状態を画面に出すのはプリントデバッグという方法で、最も一般的なデバッグ手法です。
具体的には、分岐処理はどちらを通っているのか、その時の条件はどうなっているのか、またどこまで想定していると
おりに実行されているのか等を確認できたりします。
3.GoogleChromeデベロッパーツール
通信内容などフロント側にも原因が考えられる場合はデベロッパーツールを使います。FireFoxなどでも大丈夫です。
PHPがおかしいと思っていても、そもそもの入出力がおかしいことがあるので、どこまでは確実に正しく動いているのか問題の切り分けが大切になってきます。
使い方に関しては詳しくは、次のサイトなどを参考にしてみてください。
http://www.buildinsider.net/web/chromedevtools/01
4.PHP DBG
URL : http://phpdbg.com/docs
PHP5.6以降にはPHPのデバッグをするためのツールが標準でついているので、これを使用してエラーを解析しましょう。
ブレークポイントというその場所で一旦処理を止めて状態を確認する方法がとれたり、ステップ実行という1行ずつ動作を確認しながら処理を進める方法などが利用できます。
ここまでの方法でほとんどのエラーは解決できるようになるはずです。
英語ですが上記公式ドキュメントにも詳しい使い方が書かれています。
5.PHPコマンドラインオプションを使う
URL : http://php.net/manual/ja/features.commandline.options.php
PHPファイルをコマンドラインから実行させる起動方法をする際に、オプションをつけることでさまざまな動作をさせることができます。
たとえば、
[bash]
$ php -l [php_filename]
[/bash]
を実行することで、phpの実行はせずに構文チェックだけ行うことができます。
コマンドに慣れない人にはとっつきづらいですが、詳しくはPHPマニュアルの公式を参照してみてください。
まとめ
PHPのデバッグ方法などを紹介してきましたがいかがでしたでしょうか。
PHP以外でも汎用的に使える考え方ですので是非抑えておいてください。
エラーに詰まらずどんどんアプリを作れるようにしていきましょう!
関連記事