#set_tags(mahara,mahara patch)

標準のMaharaでは、詳しいログがあまり残りません。ここでは、基本的な情報として、Apache アクセスログに Mahara で認証済みのユーザを入れるための hack を紹介します。

php で apache_note() すると、任意の文字列を apache のログに入れることができます。maharaでは http 認証を使わないので、本来http認証のユーザ名が入る部分に mahara のユーザ名を入れてしまうことが考えられます。

CentOS 6.3 + mahara 1.5.2 での例ですが、以下のようにすると view.php や download.php あたりのリクエストログにユーザ名が入るようになりました。

まず、mahara のコードを修正。

** auth/user.php [#ke1e1eb3]

#pre(soft){{
    637     public function is_logged_in() {

                &color(#ff0000){if ($this->get('logout_time') > 0) { };
                &color(#ff0000){    apache_note('AuthUser', $this->get('username')); };
                &color(#ff0000){    return true; };
                &color(#ff0000){} else { };
                &color(#ff0000){    return false; };
                &color(#ff0000){} };

    638         &color(#ff0000){%%return ($this->get('logout_time') > 0 ? true : false);%% };
    639     }
}}

としました。

次に、apache の httpd.conf で、ログに %{AuthUser}n が入るようにします。これはサイトごとに違うと思いますが、使っている LogFormat を書き換えればよいはずです。うちの場合は

 LogFormat "%h %l %u %t \"%r\" %>s %b" common

を

 LogFormat "%h %l %{AuthUser}n %t \"%r\" %>s %b" maharalog

などと書き換えてログファイルを指定しているところで

 CustomLog logs/mahara_log maharalog

としました。これで apache を再起動すればOKです。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS