最近、WinRoad徒然草のFuelPHPレッスンにはまっています。Webフレームワークとしての、”CRUD”を手っ取り早く学習できそうだからです。
エラーログを確認できる環境を作りましょう
ただ、お手本を写経をしているだけでは、途中でつまづいてしまうことがよくあります。そのとき、FuelPHPに詳しい方から頂いたアドバイスが、
「Webサーバーの方でエラーログを記録できる環境をつくっておいてください」
ということです。Webアプリケーションを構築する上で、エラーログは必須だそうです。どこらへんでエラーが発生しているのか把握するのに有効だとのこと。
FuelPHPでerror_log()関数を使う
具体的にはPHPのerror_log関数を使うわけですが、FuelPHPで使うときの手順を教わってきました。
すでに自分の開発環境はカスタマイズしまくっていますので、万人向きではないのかもしれません。この記事にアクセスされた方は、参考程度に読んでいただければ幸いです。
1.プロジェクト直下の.htaccessファイルにエラーログの出力を記述
以前、プロジェクトの直下に.htaccessファイルを用意する内容の記事を書きました。そこからさらに追記です。自分の場合、<IfModule mod_rewrite.c></IfModule>の最終行に以下の3行を記述しています。
php_value display_errors on php_flag log_errors On php_value error_log "/var/www/html/(プロジェクト名)/php_error.log"
2.プロジェクト直下にエラーログ用のファイルを作成
まずはerror_log関数が吐き出す文字列を記述する専用ファイルを、プロジェクトの直下に用意します。コマンドにすると次の通りです。
$ vi /var/www/html/(プロジェクト名)/php_error.log
3.php_error.logファイルの所有者を変更
新しく作成したphp_error.logファイルの所有者をapacheユーザーに変更します。
$ cd /var/www/html/(プロジェクト名) $ sudo chown apache:(一般ユーザーのグループ名) php_error.log
ファイル一覧で確認すると、こんな感じになっています(パーミッションは”664″のまま)。
$ ls -la -rw-rw-r-- 1 apache (一般ユーザー名) 50 9月 24 18:55 php_error.log
4.適当な位置に関数を仕込む
エラーが発生しそうな箇所にerror_log関数を記述します。
以下のコードは、WinRoad徒然草の記事に記述されている、app/classes/controller/collection.phpに、error_log関数を挟んでいます。
[php]
public function action_index() {
error_log("error_check0924");
//Collectionsテーブルのデータ取得
$query = DB::select()->from(‘collections’)->order_by(‘created’, ‘desc’)->execute();
[/php]
5.リロードをして最新のエラーだけを出力
4までの作業を終えてブラウザをリロードすると、php_error.logにエラーが記録されていきます。
ただし、そのままviコマンドでファイルを開いてしまうと、今までのエラーがすべて表示されてしまいます。なので、最新のエラーだけを確認できるコマンドを入力します。
tail -n 1 php_error.log
以上です。
〔参考サイト〕