うまく動かないとき、動作を確認するとき、デバッグの方法は人それぞれ、場合によりけり。
よくある確認方法はこんなところでしょうか。
echo $sql;
var_dump($data);
関数の実行結果を詳細に見ることもできます。
var_dump(test(1, 2, 'var_dump()には関数の実行結果を渡すこともできるのだ!'));
そんなときはファイルに書き出しましょう。file_put_contents() または、古いphpでは error_log() などの関数で希望のファイルに書き込みができます。
よくあるのが、file_put_contents('error.log'); などしても、どこに書き出されるのかわからないといった問題。そのときは、__FILE__というマジック定数が使えます。
file_put_contents(dirname(__FILE__) . '/error.log', $debug, FILE_APPEND);
__FILE__ はそのスクリプトファイルのフルパス、dirname(__FILE__) はそのスクリプトファイルがあるディレクトリ(絶対パス)になります。絶対パスでログを書き出すファイルを指定できるので、どこか意図しない場所に書き出されることはありません。
この例だと、該当のスクリプトと同じディレクトリの中の error.log というファイルに追記で書き出します。
ログファイルは php_info() などで確認できます。設定のlog_errorsがOnになっていれば、設定のerror_log で指定されたファイルにログが書き出されます。error_logに指定がないときは、Webサーバのエラーログなど実行方法に応じた場所に書き出されます。
プログラムを触らないで、何か異常がないか見るだけで確認できるので、調査の手始めにはここから入ったりします。
自分が作ったものや、ログ機能のあるフレームワークを使っているときにはあまり困らないところですが、たまにはよくわからないものを触らないといけないこともあるものです。
システム開発 ソフテルのブログ | こんなこともメモって!
no comments
RSS / trackback