1. TOPTOP
  2. Webサービス
  3. FuelPHP

FuelPHPの開発環境でエラーログのファイルを用意。PHPのerror_log関数を使う

|

web_dev

最近、WinRoad徒然草のFuelPHPレッスン(新しいタブで開く)にはまっています。Webフレームワークとしての、”CRUD”を手っ取り早く学習できそうだからです。

Startup Stock Photo

エラーログを確認できる環境を作りましょう

ただ、お手本を写経をしているだけでは、途中でつまづいてしまうことがよくあります。そのとき、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関数を挟んでいます。

public function action_index() {
        error_log("error_check0924");
        //Collectionsテーブルのデータ取得
        $query = DB::select()->from('collections')->order_by('created', 'desc')->execute();

5.リロードをして最新のエラーだけを出力

4までの作業を終えてブラウザをリロードすると、php_error.logにエラーが記録されていきます。

ただし、そのままviコマンドでファイルを開いてしまうと、今までのエラーがすべて表示されてしまいます。なので、最新のエラーだけを確認できるコマンドを入力します。

tail -n 1 php_error.log

以上です。

〔参考サイト〕