以前、MoodleのユーザIDをApacheログに出力したい記事を書い時、apache_noteの関数でいけたと書いていたのですが、
PHPがCGIで動作しているとそんな関数ないとエラーがでましたので調べなおしました。
Exception - Call to undefined function apache_note()
とりあえず調べた所、 header() でも取得できそうな記事がありましたので試してみる。
http://qiita.com/maruware/items/32487e66a0ad3010dab9
(テスト環境)
・Moodle 3.0.3+ (Build: 20160324)
・Apache/2.4.18
・PHP 7.0.5(fpm-fcgi)
moodle/config.php に以下追加。
header("ApacheMoodleUserID: ".$USER->id);
httpd.confに指定した”ApacheMoodleUserID”が入るようにLogFormatを更新
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{ApacheMoodleUserID}o\"" combined
こちらの方法だと、画面もエラーにならず、ログもきちんと取れていました。(最後の数字がMoodleのユーザID)
xxx.xxx.xxx.xxx - - [25/Apr/2016:15:35:01 +0900] "GET /pluginfile.php/53/mod_resource/content/1/OEBPS/vol-2/text/vol-002-001.xhtml HTTP/1.1" 200 515 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36" "3"
apache_note とで、ログとして取れるタイミングに差とかあるのですかね。よく分かりません。
念のため別の環境でも見ておこうと思います。