読者です 読者をやめる 読者になる 読者になる

Moodle 2.7 でForumNGアンインストール後cron.phpでエラー→回復

Moodle

概要

Moodle 2.7にForumNGをインストール→動作しない→アンインストール→cron.phpが完了しない→lockファイル手動消去→回復

前提

Moodleオープンソースのコース管理システム(LMS). ForumNGOpen University in UKによって開発された, 標準モジュールのForumよりも高機能な活動を提供するプラグイン.

時系列で

ForumNGのインストール

Moodle 2.7 に ForumNG をインストールしたが, 正常に機能しない(ウィークリーフォーマットの設置したブロック内にエラー表示が出る)のでアンインストールした.

不具合

その後, フォーラムの通知メールが(30分後に)送られてこないことに気づく. コース管理>サーバ>スケジュールをチェックすると, フォーラム通知がオフになっている. ForumNGのインストール/アンインストール過程によるものか? オンにする. それでも通知メールは送られてこない.

そこで, cron.php が機能していないという仮説で,

curl https://moodle.example.jp/Moodleインストールディレクトリ/admin/cron.php

してみると,

Server Time: 時刻
!!! ロック待ち時の操作タイムアウトです。 !!!

と表示される. Webの情報によれば, cron.php が正常に動作していてもこのメッセージが表示される頻度は低くない, とのこと. しかし, 今回は, cron.php が動作していない(例えばフォーラムの通知が送られない)のでさらに調査. Debug mode をTrueにしてみると,

Server Time: 時刻
Warning: open(/Moodleデータディレクトリ/lock/8b/8b以下一意文字列): failed to open stream: Permission denied in /Moodleインストールディレクトリ/lib/classes/lock/file_lock_factory.php on line 144 
!!! ロック待ち時の操作タイムアウトです。 !!!

ロックファイルを消去

だいぶ危ない話だが, バックアップを取った後で, このロックファイルを消去してみた. すると, 他の多くのロックファイルについても, エラーが報告される. さらに危ない話だが, バックアップを取った後で, それらすべてのロックファイルを消去してみた.

結果

すると, cron.php は最後まで実行されるようになり, フォーラムのメール通知も定期的に行われるようになった. 今のところ, 観察可能な不具合は起きていない.

だいぶ間隔の空いた cron.php の(最後までの)実行において, 最近のフォーラム通知メールは遡って送られたが, 一定の時間が経った投稿については無視されたようだ.