Moodle1.9.2 教えてください

Moodle1.9.2 教えてください

- azusa ami の投稿
返信数: 61

プロバイダを通してMoodleを使っている者です。2,3か月前にMoodle 1.9.2にアップデートしてもらったところ、下記のようなメールが届くようになりました。プロバイダに理由を聞いたところ、Moodle開発者に尋ねるようにとのことでした。どなたかお分かりになる方、対処方法を教えていただけないでしょうか? 


Insert into log table failed at Tuesday 16th of September 2008 03:01:20 AM.

It is possible that your disk is full.

The failed SQL is:

INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url, info)

VALUES ('1221552080', '26', '60', '218.217.130.76', 'user', '0', 'view all', 'index.php?id=60', ' ')

( 編集 Tatsuya Shirai - 最初の投稿日時 2008年 09月 16日(火曜日) 18:58 )

azusa ami への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 水平線より下のメール本文がうまく表示できていませんでした.HTMLコードでも混ざっていたのかも知れません.テキストエディタ経由で貼り直させて頂きました.オリジナルのメールから欠けている情報がありましたら返信下さい.

azusa ami への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 なお,このメッセージをそのまま信じるのであれば,HDDの容量不足でログを記録できない,と言っているように見えます.

 もし本当にHDDの容量がオーバー気味であるならば,[サイト管理]-[サーバ]-[クリーンアップ]の”ログの保存期間”を例えば90日などに制限することで古いログは削除されるようになります.デフォルトでは「削除しない」になっていると思います.

azusa ami への返信

Re: Moodle1.9.2 教えてください

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
同じような現象がMoodle Trackerにも報告してあります
MySQLにも何らかの原因がありそうですね。

[Moodle Tracker - Insert into log table failed at
Saturday 29th of March 2008 10:11:43 AM. It is possible that your disk is full]
http://tracker.moodle.org/browse/MDL-14100
Mitsuhiro Yoshida への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 データベースに不良が無いか,という点も気になりますね.

 Moodleを1.9.2+に更新した後に,administratorの権限を持つユーザでログインし,[サイト管理]の”通知”をクリックしていない,といったことは無いでしょうか.データベースの更新が行われていない可能性もゼロでは無いですね.

 私のサーバのデータベースのmdl_logの構造を添付ファイルに示します.種別等が異なったり,あるいは項目が欠けていたりしないでしょうか?

 可能ならばデータベースのメンテナンスも行なってみた方が良いでしょう.(できればバックアップを取った上で).

添付 mdl_log.jpg
Tatsuya Shirai への返信

Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
確かにこの件は本当にディスクフルまたは何らかのMySQLのエラーの可能性が大きそうですね。

でもMDL-14100
Matthew Davidson - 01/Jul/08 10:43 PM
のはちょっと違って,本当にMoodleのバグのようです。これを見たMartinが「これはMoodleのバグじゃないよ」と無視しているのは理由がわかりません。反論も無視されているようです。
Haruhiko Okumura への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

確かに,

INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url, info)
        VALUES ('1214887533', '0', '', '67.195.58.180', 'resource', '0', 'view', 'view.php?id=', ' ')

3つ目のcourseがnullで,でもリソースをviewしている訳ですから,ちょっと奇妙な感じですね.私はログの部分に関して詳しくないので,このcourseがnullという状況が異常なのか正常なのか分かりません.cmidがゼロというのはフロントページ?

 この現象が発生する状況を再現させることができないと,Moodleのバグとして追求するのは難しそうですね.うーん,うちでも再現できないかなぁ.(それはそれで困りますが^^;)

#ディスクフルでは無いのにディスクフル,とエラーが出力されるのはMoodleの側の問題なのか,MySQL側の問題なのか? エラーメッセージをメールする仕組みを調べないと分からないですね.


lib/datalib.php内に,

$message = "Insert into log table failed at ". date('l dS \of F Y h:i:s A') .".\n It is possible that your disk is full.\n\n";

こんな部分があるようです(grep速報^^).

そして,function add_to_log()内で,

    $sql ='INSERT INTO '. $CFG->prefix .'log (time, userid, course, ip, module, cmid, action, url, info)
        VALUES (' . "'$timenow', '$userid', '$courseid', '$REMOTE_ADDR', '$module', '$cm', '$action', '$url', '$info')";

    $result = $db->Execute($sql);

    // MDL-11893, alert $CFG->supportemail if insert into log failed
    if (!$result && $CFG->supportemail) {
        $site = get_site();
        $subject = 'Insert into log failed at your moodle site '.$site->fullname;
        $message = "Insert into log table failed at ". date('l dS \of F Y h:i:s A') .".\n It is possible that your disk is full.\n\n";
        $message .= "The failed SQL is:\n\n" . $sql;

こうですね.エラーが発生したら disk full の可能性アリ? ちょっと乱暴かも.

Tatsuya Shirai への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 自分のサーバのログ(mdl_log)を見てみたのですが,courseが0というのはログイン失敗時などにも見られますね.null(='')の時にゼロに自動的になるようにTrackerでは書かれていますが,本当なのでしょうか.だとしたら,ゼロがcourseに記録されるのは,かなり頻繁に起こる事態ですね.

 でも,今回のお問い合わせの件ではcourseが''ではないので,この例とは別で本当にディスクフルやデータベースの不良の可能性もありますので,切り分けた方が良いでしょう.

Tatsuya Shirai への返信

Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
course (bigint) に空文字列 '' を代入しようとするとエラーになるということのようです。一方,何も入れなければデフォルトの 0 になります。

ただ,ここが '' になるという現象はうちでは起こったことがないので,Moodleのバグと書きましたが,非標準のモジュールを使っていてそのバグかもしれません。
Haruhiko Okumura への返信

Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

試しに,

add_to_log('', 'resource', 'view', 'view.php?id=', '', 0, 2);

を実行してみたのですが,特に問題なくインサートできたようです.
ちなみにこの時の$resultの値は,

object(ADORecordSet_empty)#359 (6) { ["dataProvider"]=> string(5) "empty" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows"]=> int(0) ["fields"]=> bool(false) ["connection"]=> bool(false) }

です.add_to_log()内で,var_dump($courseid)で確認すると,string(0) "" ですので,空文字列であることも確認済みです.

フロントページにアクセスした時の$resultは,

object(ADORecordSet_empty)#362 (6) { ["dataProvider"]=> string(5) "empty" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows"]=> int(0) ["fields"]=> bool(false) ["connection"]=> bool(false) }

で,あるコースに入った時の$resultも,

object(ADORecordSet_empty)#358 (6) { ["dataProvider"]=> string(5) "empty" ["databaseType"]=> bool(false) ["EOF"]=> bool(true) ["_numOfRows"]=> int(0) ["fields"]=> bool(false) ["connection"]=> bool(false) }

です.同じですね.falseでは無いようです.

 古いデータベースからの引継ぎ時に属性の変更が正しく行なわれなかった場合があった,という可能性はありますね.特定のバージョンからのアップデートに不具合があった,など.


azusaさんがMoodleをインストールして貰ったプロバイダは国内か,国外か,そのMySQL等のバージョンやデフォルト設定は正しいのか,特にmdl_logの構造が私の示した設定と同じかどうか,この辺りを回答して頂くとヒントが得られる気がします.

Tatsuya Shirai への返信

Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

ご返信ありがとうございます。設定のことはまったくわからず困っています。使っているプロバイダはアメリカです。そのプロバイダからは、2回にわけて次のような返信をもらっています。


This means, that your application is experiencing problems updating one or more tables of your database. Since this may indicate corrupted table, I will advise you to contact Moodle's developers, so they can check the issue and suggest a fix.


This is not a problem caused by incorrect update, but by Moodle itself, as one of its functions or addons has corrupted a table in your database (or the query, which updates this table). I will strongly suggest you to provide the errors to Moodle's developers, who will be able to track down the cause of the problem and apply a fix.


下記情報も役立ちますでしょうか?(プロバイダのサイトからコピーしました)

Apache version 1.3.37 (Unix)
PHP version 5.2.5
MySQL version 5.0.51a-community-log
Architecture i686
Operating system Linux

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
いったい何でMoodleに原因があると判断できたんでしょうか。自分の管理しているマシンならちょっとログインして問題のSQL文を打ち込んでみればすぐわかるのでしょうけれど。

白井先生が書いておられるように,Moodleのアップグレードをされたのならその作業がちゃんとできていないという可能性はありそうですね。
azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 データベースの構造等を調べるには,phpMyAdmin (http://moodle.org/mod/data/view.php?d=13&rid=448)のインストールがお勧めです.私が添付した画像はこのツールを使った結果の表示画面です.このツールをmoodleに追加すると,[サイト管理]-[サーバ]に”データベースの管理”という項目が追加されます.

 Moodleを管理しているプロバイダの方に,このツールの追加をお願いしては如何でしょう.


 あと,azusaさんはご自身のMoodleの管理者権限を持つユーザですよね.Moodle1.9.2にアップデートした際にデータベースの自動更新は行なわれましたか? Moodleのアップデート後に,管理者権限をもつユーザがログインすると自動的にMoodleがデータベースの更新作業を始めます.もし,プロバイダのエンジニアの方がMoodleの管理者権限を持つユーザアカウントをお持ちならば,この作業はそのエンジニアの方がログインした際に行なわれていると思いますので,azusaさんの目に触れることは無いでしょう.でも,多分,エンジニアの方はソフトウェアのインストールしか行なわないですよね.

 ですので,(これは無関係の可能性が高いですが)administratorに属するユーザでMoodleにログインし,サイト管理の通知をクリックしてみて頂けないでしょうか.可能性を一つずつ潰して行きたいので.

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

ありがとうございます。

プロバイダにphpMyAdminの追加を依頼してみます。プロバイダにアップデートを依頼した際、管理者権限をもつユーザのアカウントとパスワードを知らせました。更新作業のためかもしれません。

さきほどサイト管理の通知をクリックしてみました。アップデート後(今年4月)に一度Moodle登録していますが、再度しました。

プロバイダからの返信を待って、また返信させていただきます。

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

プロバイダに依頼したところ、すでにインストールされているとのことで、指示通り探したら見つかりました。このphpMyAdminのなかで、なにをチェックしたらいいのでしょうか?

よろしくお願いします。

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 以下の手順でMySQL中のMoodleのデータベースの中にあるmdl_logというテーブルの構造をまずは調べてみましょう.

  1. Moodleのフロントページに移動する.
  2. 画面左側のコラムにある[サイト管理]-[サーバ]-[データベース管理]を選択して下さい.phpMyAdminのトップの画面が表示されると思います.
  3. 左端のリストの中からmdl_logを探してクリックして下さい.右側のメインのウィンドウにmdl_logの情報が沢山表示されるでしょう.
  4. この画面の上のところに「表示」「構造」「SQL」...というタブが表示されていると思います(英語表示の可能性もあります).この左から二番目の”構造”を選択して下さい.(デフォルトでこの構造が選択されているはずですが,念のため).
  5. この”フィールド”,”種別”,”照合順序”...などの一覧がmdl_logの構造(設定)を表しています.この内容が以前に私が添付した画像と異なる箇所は無いでしょうか? 違いを探してみて下さい.

#もし違いが発見された場合...どうすれば良いのでしょう^^; SQLについては全くの勉強不足です.MySQLに詳しい方に後をお任せします.

 

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

ありがとうございました。チェックしましたところ、下から3つ目のaction varchan(15)となっており、Shiraiさんの(40)とは違っています。この点が問題でしょうか?

moodle question

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
Moodle 1.6でもactionはvarchar(40)ですから,よほど古いものからアップデートされたんですね(しかもアップデートが失敗した?)。

この15を40に直してみることはできるでしょうか。

Haruhiko Okumura への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

40に修正しました。ほかに何かすべきことありますでしょうか?

mq2

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
これでしばらく様子を見てくださいませんか。また警告が出たら教えてください。

ちなみに,どういうバージョンのMoodleから1.9.2にアップグレードされたのでしょうか。後学のためお教えください。
Haruhiko Okumura への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

ありがとうございました。しばらく様子をみます。

プロバイダにアップデート以前のバージョンを尋ねましたら、1.8とのことでした。

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 インストール時のデータベースの構造に関する情報は,lib/db/install.xmlの中にあるようですね.

    <TABLE NAME="log" COMMENT="Every action is logged as far as possible" PREVIOUS="groups_members" NEXT="log_display">

この項目の中に,

        <FIELD NAME="action" TYPE="char" LENGTH="40" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="cmid" NEXT="url"/>

とあります.これはMoodle1.7.1 (2007/02/02)のソースです.ここでもLENGTH=40となっていますので,どこで15文字になったのか分からないですねぇ.

Moodle1.8 (2007/04/05)も同様ですし,手元で最も新しいMoodle1.9.2でも.

なんらかのバージョンでのみミスがあったとも考えにくいですねぇ.CHANGESをザッとサーチしましたが,それらしい記述は見当たりませんでした.

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 フォーラムを検索してみました.

 少し関わりがありそうなものを2つ挙げます.

http://moodle.org/mod/forum/discuss.php?d=104777#p467349
 :一応,リプライしてみました.これで状況が改善する方が現れるならば少数とはいえ,Moodleのデータベースに関するバグがどこかの段階で存在していたと考えられますね.

http://moodle.org/mod/forum/discuss.php?d=98067&parent=441341

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

先ほどまたエラーメッセージがきてしまいました、結構ショックです。原因は他にあったということでしょうか。


Insert into log table failed at Sunday 21st of September 2008 11:43:22 PM.

 It is possible that your disk is full.

 

The failed SQL is:

 

INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url, info)

        VALUES ('1222058602', '270', '1', '75.39.218.225', 'course', '0', 'view', 'view.php?id=1', '1')

 
azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
あららら,残念です。

うちで発生すればデバッグできるのですが,海外のプロバイダとなると,お手上げです。
Haruhiko Okumura への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 lib/dmlib.phpのfunction execute_sql()あたりを見ると,デバッグコードが存在します.

 もしかしたら,[サイト管理]-[デバッグ]の”デバッグメッセージ”を"DEVELOPER"にすると,詳細なエラーメッセージが画面上に出力されるかも知れません.

 他の利用者の方にもエラーメッセージが表示されるかも知れませんので,気になるようでしたら,メンテナンスモード([サイト管理]-[メンテナンスモード])で実行してみて下さい.


    // MDL-11893, alert $CFG->supportemail if insert into log failed
    if (!$result && $CFG->supportemail) {
        $site = get_site();
        $subject = 'Insert into log failed at your moodle site '.$site->fullname;
        $message = "Insert into log table failed at ". date('l dS \of F Y h:i:s A') .".\n It is possible that your disk is full.\n\n";
        $message .= "The failed SQL is:\n\n" . $sql;

の後に,

        debugging($db->ErrorMsg() .'<br /><br />'. s($command));

を追加しないとエラーメッセージは見られないか.すみません,無駄かも知れません.でも,なにか情報が得られるかも知れませんので,是非とも試して見て下さい.

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
例によって質問者さんの書き込みは途中で切れていますね。HTMLソースを見ても何かおかしいようです。なぜこういうことが起こるのでしょうか。

とりあえずメールから欠損部分を拾っておきます:

Insert into log table failed at Sunday 21st of September 2008 11:43:22 PM.

It is possible that your disk is full.

The failed SQL is:

INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url,
info)
        VALUES ('1222058602', '270', '1', '75.39.218.225', 'course',
'0', 'view', 'view.php?id=1', '1')
azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
> プロバイダにアップデート以前のバージョンを尋ねましたら、1.8とのことでした。

このあたりを疑っています。「一つ前」のバージョンを答えたのだろうと思いますが,二つ前,三つ前にさかのぼると,Moodle 1.5.x あたりがあって,そこからアップデートするときに失敗していたということもあるのではないかと思いました。

それとは別に,いくつかエラーが報告されていますが,これもデータベースでテーブルの構造を調べてもらえれば同じ原因かそうでないか,わかりそうですね。
Haruhiko Okumura への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

lib/db/mysql.phpのfunction main_upgrade(), Moodle1.9.2+ですと1938行あたりに,

     if ($oldversion < 2006050500) {
        table_column('log', 'action', 'action', 'varchar', '40', '', '', 'not null');
    }

とありますね.function table_column()はlib/ddllib.php中に宣言されており,一つ目の引数はプレフィクス抜きのテーブル名ですので,標準であればmdl_logのフィールド名'action'を変更する,というコマンドです.

ここで変更されたのがnot nullの方なのか,40の方なのかは分かりませんが,2006/5/5のバージョンアップで何かが起きたのですね.

 この修正が正常に完了しなかった(あるいは行なわれなかった)にも関わらずアップグレードが完了してしまい,$oldversionが更新されてしまったと考えて良さそうですね.

#古いCHANGESは分からないので詳細は不明です.どこかに記録は無いでしょうか.

という訳で,Azusaさん.ご利用しているMoodleサイトは2006/5/5より前に構築したものでしょうか?

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

きわどいですが、2006年初め頃(2,3月頃)に作ってもらったものだと思います。先ほどフォーラムにも書きましたが、またエラーメッセージが届きました。。。

Insert into log table failed at Sunday 21st of September 2008 11:43:22 PM.
 It is possible that your disk is full.

The failed SQL is:

INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url, info)
        VALUES ('1222058602', '270', '1', '75.39.218.225', 'course', '0', 'view', 'view.php?id=1', '1')


azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 ああ,私の勘違いもありました.

 確かにactionはvarchar(15)ではなくvarchar(40)なのですが,「report/log/live.php?id=1」これらの情報は'action'ではなく'url'に記録されるのですね.actionの方はもっとシンプルに"report live"程度の長さです.

 いま私のサイトもactionをvarchar(15)にして,ついでにエラーが発生したらメッセージを出力するように仕掛けてみたのですが,add_to_log()でエラーは発生しませんでした.何か,まだ違いがあるのだろうか.

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 つまり15文字を越えるactionを記録しようとすると失敗していた,ということなのでしょうか.'index.php?id=60'はピッタリ15文字なのですね.文字列終端文字もあるのでしょうか,MySQLに記録する際には.

 actionが40文字まで増やされたことで安全になったのかも知れませんが,なんとなく気持ち悪いですね.可変長という訳にはいかないのでしょうか.パフォーマンスが悪くなるでしょうけれども.

 あるいはSQLを実行する前に切り詰めるかしておくべきでしょうかねぇ.

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

その後、エラーメッセージは届いていません。解決していればいいのですが・・・

様子見します。

azusa ami への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- Tatsuya Shirai の投稿

 画面が読みにくくなってきたのでこちらに返信します.

 あと,MySQLのデータベースに問題が生じている可能性も考えた方が良いかも知れません.折角,phpMyAdminがインストール済みですので,以下の手順を試して見て下さい.

  • phpMyAdminで,mdl_logを選択する.
  • ”表示”,”構造”...の右の方にある”操作”をクリックして下さい.
  • テーブル管理の中にある”テーブルをチェックする”をクリックして見て下さい.問題が無ければMsg_textは"OK"だと思います.
  • 次に,また”操作”を選んで,今度は”テーブルを分析する”をクリックして見て下さい.当方の環境ですと,Msg_textは"Table is already up to date"です.

Tatsuya Shirai への返信

Re: Apache version 1.3.37 (Unix) Re: Moodle1.9.2 教えてください

- azusa ami の投稿

両方ともやってみましたが、下記の表示が出ました。

”テーブルをチェックする”Msg_text="OK" ”テーブルを分析する”Msg_text="Table is already up to date"
Tatsuya Shirai への返信

Re: Moodle1.9.2 教えてください

- Haruhiko Okumura の投稿
すみません,私のほうでもやってみましたが

mysql> insert into mdl_log(course) values('');
Query OK, 1 row affected, 1 warning (0.00 sec)

でこれは思い違いでした(もしかしたらMySQLのバージョンにも依存するのかもしれませんが確かめられていません)。
azusa ami への返信

可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 全く無関係の可能性が非常に高いのですが.

 function add_to_log()を読んだ限りでは何も難しいことは無いように見えます.
 その前提は,$result = $db->Execute($sql); が正しいということ.

 クラスの継承の継承の継承といった感じで実体がどこにあるのか探すのに少し手間取りましたが,Execute()の実体は最終的にlib/adodb/adodb.inc.phpの中のfunction &Execute()であると思われます.問題はこのadodb.inc.phpのソースですが,タブコードでインデントしている点は仕方無いにしても,UTF-8で読み込もうとするとエラーが5箇所ある,とエディタ(秀丸)は言います.残念ながら最初の1箇所しか示す機能を持っていないのでどこが問題か,を示すことはできません.”欧文”(Latin-1?)で読み込むと警告が発生しないので,一部,UTF-8では対応できない文字コードを使っている可能性があります.多分,コメントの部分だとは思うのですが,5箇所のどこかに致命的な問題を生じる箇所がある可能性は否定できません.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 以下のような文字コードチェックのプログラムでチェックしてみました.

    $farray = file("adodb.inc.php");
    $line = 1;
    foreach ($farray as $fline) {
        if (mb_detect_encoding($fline) != 'ASCII') {
            echo "$line(".mb_detect_encoding($fline)."):$fline<br/>";
            echo str_replace('%20',' ',rawurlencode($fline)); echo "<br/>";
        }
        $line++;
    }

結果は,

2634(SJIS): * and/or last one of the recordset. Added by Iv�n Oliva to provide recordset pagination.
%09%2A and%2For last one of the recordset. Added by Iv%E1n Oliva to provide recordset pagination.%0A
2661(SJIS): * and/or last one of the recordset. Added by Iv�n Oliva to provide recordset pagination.
%09%2A and%2For last one of the recordset. Added by Iv%E1n Oliva to provide recordset pagination.%0A
2769(SJIS): var $_currentPage = -1; /** Added by Iv�n Oliva to implement recordset pagination */
%09var %24_currentPage %3D -1%3B%09%2F%2A%2A Added by Iv%E1n Oliva to implement recordset pagination %2A%2F%0A
2770(SJIS): var $_atFirstPage = false; /** Added by Iv�n Oliva to implement recordset pagination */
%09var %24_atFirstPage %3D false%3B%09%2F%2A%2A Added by Iv%E1n Oliva to implement recordset pagination %2A%2F%0A
2771(SJIS): var $_atLastPage = false; /** Added by Iv�n Oliva to implement recordset pagination */
%09var %24_atLastPage %3D false%3B%09%2F%2A%2A Added by Iv%E1n Oliva to implement recordset pagination %2A%2F%0A

赤文字で示した%E1がUTF-8としては正しくない文字です.%09はHT(水平タブ)です.

function &Execute()自体は822行から始まるので影響は受けないと思いますが.

function &Execute()の戻り値はfunction &_Execute()の戻り値であり,その戻り値はfunction _query()がfalseの時にfalseとなる.どうやらfunction _query()はデータベースの種類の違いによってインスタンスが異なるようなので,このファイルの中には存在しない.(MySQLの場合は,adodb-mysql.inc.phpかadodb-mysqli.inc.phpかな?)

lib/adodb/drivers/adodb-mysql.in.phpと仮定すると,function _query()の戻り値は,$sqlが配列の場合はmysqli_stmt_execute()の戻り値,そうでない場合はmysqli_query()の戻り値.ただし,

  if (!$mysql_res =  mysqli_query($this->_connectionID, $sql, ($ADODB_COUNTRECS) ? MYSQLI_STORE_RESULT : MYSQLI_USE_RESULT)) {
      if ($this->debug) ADOConnection::outp("Query: " . $sql . " failed. " . $this->ErrorMsg());
      return false;
  }

mysqli_query()はPHPの組み込み命令のようです.INSERTに失敗したらfalseを返す.では,やはり単にINSERTに失敗しているだけなのか? 成功すればTUEを返すらしいので,ゼロを返したからfalse,という類のミスでは無さそうです.

 なお,adodb-mysql.in.phpの場合のfunction _query()はもっと単純で,

 // returns queryID or false
 function _query($sql,$inputarr)
 {
 //global $ADODB_COUNTRECS;
  //if($ADODB_COUNTRECS)
  return mysql_query($sql,$this->_connectionID);
  //else return @mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6
 }

これだけです.


 データベースとMoodleのコネクションが切れているという可能性もありますが,それはどういう時に発生するのでしょう.あと,データベースの形式がMyISAMとInnoDBで異なる,という可能性もあり得ますね.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

Azusaさん,確認して頂きたいことがあります.

 phpMyAdminの画面で,左のカラムの一番上にある’moodle(数字)'をクリックして見て下さい.メインのカラムにテーブルの一覧が表示されるはずです.mdl_logの種別はMyISAMですか,それともInnoDBですか?

 ちなみに私のデータベースは全てのテーブルがMyISAMです.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- azusa ami の投稿

すべてMyISAMでした。

azusa ami への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 データベースのチェック,2件とも了解しました.いやぁ,困りましたね.

 あとは,デバッグメッセージを”DEVELOPER"にしてみる件は如何でした?


 Azusaさんが管理しているMoodleサイトの利用状況はかなり活発な方でしょうか? それとも少人数で利用しているのでしょうか.

 何か通常の使用で「まぁ,こんなものかな」と見過ごしている不具合は無いですか? たとえば DATABASE DISCONNECTION のような画面が時々表示されるけれども,ブラウザをリロードすれば直ぐに表示されるから気にしていない,など.あと,フォーラム等に書き込みを行ってから画面が戻ってくるまで30秒以上時間が掛かるなど.

 あと,これはどう影響するのか分からないのですが,[サイト管理]-[サーバ]-[パフォーマンス]の設定は全てデフォルト値でしょうか?

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- azusa ami の投稿

あとは,デバッグメッセージを”DEVELOPER"にしてみる件は如何でした?
★やってみましたが、まだなにも変わったことは起こっていません。


 Azusaさんが管理しているMoodleサイトの利用状況はかなり活発な方でしょうか? それとも少人数で利用しているのでしょうか.
★登録者は100名強で日常的に数名の登録者が使用している状態です。ゲストユーザーを含めると、日常的に10-20名程度の利用があるようです。


 何か通常の使用で「まぁ,こんなものかな」と見過ごしている不具合は無いですか? たとえば DATABASE DISCONNECTION のような画面が時々表示されるけれども,ブラウザをリロードすれば直ぐに表示されるから気にしていない,など.あと,フォーラム等に書き込みを行ってから画面が戻ってくるまで30秒以上時間が掛かるなど.
★書き込みを行ってから画面が戻ってくるのはやや遅いと思いますが、5-10秒くらいだと思います。それ以外は一部の登録者への自動メールがdelivery failureになるのですが、これは登録者側の設定の問題かもしれないと思っています(同じ企業の方ばかり戻ってくるので)


 あと,これはどう影響するのか分からないのですが,[サイト管理]-[サーバ]-[パフォーマンス]の設定は全てデフォルト値でしょうか?
★デフォルト値ではないものもいくつかありました。
上から、internal, yes, 10, 1, (空欄), No


Shiraiさんが以前ご紹介してくださったサイトをみますと、VARCHAR(40)に変更してから、アップグレードをre-runするとあります。わたしはVARCHAR(40)にしてからアップグレードしていないので、やった方がいいのでしょうか。

http://moodle.org/mod/forum/discuss.php?d=98067&parent=441341

azusa ami への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 キャッシュタイプを試しに”なし”に設定してみるのも手です.パフォーマンスが極端に落ちるようでしたら戻すべきでしょう.

 内部キャッシュ最大値が1ですね.私のところも1です.自分で1に設定したのか,以前のデフォルト値が1だったのかは分かりません^^;. キャッシュをInternalの状態で,試しに10,あるいは50にして見てはどうでしょう.

 なお,キャッシュタイプは”なし”と”Internal”以外に設定するのは危険ですので行なわないで下さい.最悪,ログインすらできなくなる可能性のある設定(だと思う)です.


Then re-run the upgrade.は不要です.あの書き込みは,Moodleのアップグレード作業が正しく完了できなかった方の書き込みへの返信なので,こう書かれたのだと思います.phpMyAdminで更新した設定は即座に反映されるのだと思います(ですよね?).

ただ,手作業で変更した設定の場合は,MySQLに”設定を反映させて”とコマンドを送る必要があったと思います.これはコマンドラインの場合だけでしょう.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- azusa ami の投稿

上記の設定は変更してもサイト上問題はないでしょうか? サイトに明らかに変更が見えるようであれば、ユーザーにそういったニュースを流してからやりたいと思いますが。

azusa ami への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 キャッシュを1から50に変更する操作と,そのままキャッシュをInternalに変える操作を行ないましたが,私のサイト(WindowsXP, Apache)では問題ありませんでした.

 絶対に大丈夫だという保証はできませんが,多分,大丈夫でしょう.その代わりキャッシュの種類を”なし”と”Internal"以外には変更しない方が良いでしょう.これだけは気を付けて下さい.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Haruhiko Okumura の投稿
データベースの問題とは関係ないようですが,

Added by Iván Oliva ...

とLatin-1で書いてあるんですね。UTF-8に統一してほしいなぁ。

Haruhiko Okumura への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

 (秀丸)テキストエディタで開くと警告を出してくれるからまだ良いのですが,警告なしだと,一部修正してから保存すると想定外の場所まで修正されてしまう恐れがあるで怖いですね.diffを取ったら「ん?ここは触ってないぞ?!」と.

MDL-16624にお願いしておきました.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Haruhiko Okumura の投稿
確かewikiもこうなっていましたね。しかもコメントじゃなく。
これは直ったのでしたっけ。
Haruhiko Okumura への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

ewikiに関しては,速やかに対応して頂きました.

MDL-12862


バッチ処理で,非UTF-8な文字コードを含むファイルを発見する処理はそれほど難しく無いですよね.是非ともクリーンなUTF-8環境を保つ努力を続けて頂きたいです.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Haruhiko Okumura の投稿
> バッチ処理で,非UTF-8な文字コードを含むファイルを発見する処理はそれほど難しく無いですよね.

auth/cas/CAS/languages/french.php:40:25
auth/cas/CAS/languages/greek.php:34:5
auth/cas/CAS/languages/japanese.php:27:8
lib/adodb/adodb-lib.inc.php:542:5
lib/adodb/adodb.inc.php:2634:55
lib/adodb/drivers/adodb-oci8.inc.php:33:46
lib/adodb/lang/adodb-ar.inc.php:5:44
lib/adodb/lang/adodb-bg.inc.php:9:44
lib/adodb/lang/adodb-ca.inc.php:11:51
lib/adodb/lang/adodb-cn.inc.php:7:45
lib/adodb/lang/adodb-cz.inc.php:12:48
lib/adodb/lang/adodb-hu.inc.php:3:5
lib/adodb/lang/adodb-pl.inc.php:7:64
lib/adodb/lang/adodb-pt-br.inc.php:7:45
lib/adodb/lang/adodb-ru1251.inc.php:7:44
lib/adodb/lang/adodb-sv.inc.php:5:46
lib/adodb/lang/adodb-uk1251.inc.php:7:44
lib/adodb/lang/adodb_th.inc.php:6:45
lib/editor/htmlarea/plugins/TableOperations/lang/fi.js:3:70
lib/editor/tinymce/jscripts/tiny_mce/langs/ca.js:8:31
lib/editor/tinymce/jscripts/tiny_mce/langs/el.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/langs/es.js:23:31
lib/editor/tinymce/jscripts/tiny_mce/langs/fi.js:26:13
lib/editor/tinymce/jscripts/tiny_mce/langs/fr.js:3:9
lib/editor/tinymce/jscripts/tiny_mce/langs/fr_ca.js:8:28
lib/editor/tinymce/jscripts/tiny_mce/langs/he.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/langs/hu.js:4:14
lib/editor/tinymce/jscripts/tiny_mce/langs/is.js:12:16
lib/editor/tinymce/jscripts/tiny_mce/langs/it.js:40:223
lib/editor/tinymce/jscripts/tiny_mce/langs/ko.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/langs/nl.js:40:21
lib/editor/tinymce/jscripts/tiny_mce/langs/pl.js:9:24
lib/editor/tinymce/jscripts/tiny_mce/langs/pt.js:5:17
lib/editor/tinymce/jscripts/tiny_mce/langs/pt_br.js:13:17
lib/editor/tinymce/jscripts/tiny_mce/langs/ru.js:6:13
lib/editor/tinymce/jscripts/tiny_mce/langs/ru_KOI8-R.js:6:13
lib/editor/tinymce/jscripts/tiny_mce/langs/th.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/langs/tr.js:4:16
lib/editor/tinymce/jscripts/tiny_mce/langs/zh_cn.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/langs/zh_tw.js:2:3
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js:7:24
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/es.js:18:40
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fa_ca.js:6:34
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr.js:4:16
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/fr_ca.js:6:34
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/he.js:4:15
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/hu.js:4:15
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko.js:4:21
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pl.js:5:16
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/pt_br.js:13:22
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru.js:4:15
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ru_KOI8-R.js:4:15
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/tr.js:5:19
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh_cn.js:4:16
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/zh_tw.js:2:3
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js:7:24
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/fr.js:4:36
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/fr_ca.js:4:31
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/he.js:4:20
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/hu.js:4:27
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/pl.js:7:27
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/ru.js:4:20
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/ru_KOI8-R.js:4:20
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/tr.js:5:38
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/zh_cn.js:4:21
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/zh_tw.js:2:3
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js:7:24
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca.js:7:40
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js:4:22
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js:13:27
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr.js:3:9
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/fr_ca.js:6:20
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/he.js:4:25
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js:4:27
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/is.js:12:22
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js:60:28
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js:4:22
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js:55:17
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js:8:28
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js:12:42
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt_br.js:13:27
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js:4:25
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/ru_KOI8-R.js:4:25
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tr.js:5:29
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js:4:13
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh_cn.js:4:25
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/zh_tw.js:2:3
lib/editor/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js:7:24
lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php:9:24
lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js:7:24
lib/editor/tinymce/jscripts/tiny_mce/utils/form_utils.js:9:24
lib/editor/tinymce/jscripts/tiny_mce/utils/mclayer.js:9:24
lib/editor/tinymce/jscripts/tiny_mce/utils/mctabs.js:9:24
lib/editor/tinymce/jscripts/tiny_mce/utils/validate.js:9:24
lib/excel/OLEwriter.php:235:39
lib/excel/Parser.php:469:31
lib/geoip/ChangeLog.htm:29:103
lib/geoip/geoipregionvars.php:1135:9
lib/phpmailer/language/phpmailer.lang-br.php:9:41
lib/phpmailer/language/phpmailer.lang-ca.php:10:71
lib/phpmailer/language/phpmailer.lang-cz.php:9:41
lib/phpmailer/language/phpmailer.lang-dk.php:12:58
lib/phpmailer/language/phpmailer.lang-es.php:4:8
lib/phpmailer/language/phpmailer.lang-fo.php:6:16
lib/phpmailer/language/phpmailer.lang-fr.php:12:62
lib/phpmailer/language/phpmailer.lang-hu.php:9:58
lib/phpmailer/language/phpmailer.lang-ja.php:11:38
lib/phpmailer/language/phpmailer.lang-no.php:9:42
lib/phpmailer/language/phpmailer.lang-pl.php:10:42
lib/phpmailer/language/phpmailer.lang-ru.php:9:38
lib/phpmailer/language/phpmailer.lang-se.php:5:21
lib/phpmailer/language/phpmailer.lang-tr.php:3:23
lib/tcpdf/html2pdf.php:2:16
lib/typo3/class.t3lib_div.php:899:38
mod/wiki/ewiki/fragments/auth.php:4:3
mod/wiki/ewiki/fragments/funcs.inc:22:13
mod/wiki/ewiki/plugins/aview/downloads.php:16:36
mod/wiki/ewiki/plugins/email_protect.php:37:34
mod/wiki/ewiki/plugins/lib/mime_magic.php:92:24
mod/wiki/ewiki/plugins/markup/footnotes.php:47:40
mod/wiki/ewiki/plugins/notify.php:49:50

Haruhiko Okumura への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

あははは,結構ありますねぇ!(ewikiにも残っていますか...)

auth/cas/CAS/languages/japanese.php

だけ気になったので見てみたのですが,

/**

 * @file languages/japanese.php

 * @author fnorif (fnorif@yahoo.co.jp)

 * 

 * Now Encoding is EUC-JP and LF

 **/

EUC-JPのようですね.CASを使用していないのですが,これはEUC-JPでないといけないのでしょうか.言語パック対応では無さそうですので,吉田さんは無実です!

 言語(lang)関係は仕方が無いのかな?とも思うのですが,wiki関係はきっとコメント部分でしょうね.

 adodb関係は,

lib/adodb/adodb-lib.inc.php:542:5
lib/adodb/adodb.inc.php:2634:55
lib/adodb/drivers/adodb-oci8.inc.php:33:46

の3つですね.これも先のTrackerへの報告に追加しておきます.


ついでですので,全リストも添付しておきました.

Tatsuya Shirai への返信

Re: 可能性の一つとして怪奇現象?

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> EUC-JPのようですね.CASを使用していないのですが,これはEUC-JPでないといけないのでしょうか.言語パック対応では無さそうですので,吉田さんは無実です!

無実でよかったです。笑顔

MoodleのCASモジュールには、phpCASを使っているんですね。
2007年4月29日に日本語言語ファイル (auth/cas/CAS/languages/japanese.php) が追加されているのに、EUC-JPなのは変だなあと思いましたが、納得しました。

[phpCAS ChangeLog]
http://www.ja-sig.org/wiki/display/CASC/phpCAS+ChangeLog


Mitsuhiro Yoshida への返信

Re: 可能性の一つとして怪奇現象?

- Haruhiko Okumura の投稿
吉田さんのものも
lib/phpmailer/language/phpmailer.lang-ja.php
とかはEUC-JPではないですか?
Haruhiko Okumura への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

lib/phpmailer/language/phpmailer.lang-ja.php

ああ,バッチリと名前が入っていますよ(笑).

主にエラーメッセージ用ですね.

$this->languageに読み込まれて,それを$this->Lang()でアクセスできる.メール送信などでエラーが発生すると$this->SetError()で$this->ErrorInfoに書き込む.

このErrorInfoが利用されているのは,lib/phpmailer/mailerc.phpの中のfunction send_message()だけのようですね.それも,

function send_message($filePath)
{
    // Open the file and read the header contents and set
    // another message.  Then run the phpmailer send file.
    $mail = new mailerc();
    if(!$mail->SendFromFile($filePath))
        printf("error: %s\n", $mail->ErrorInfo);
    else
        printf("success: sent\n");
}

printf()ですね.print_error()にするべきなのかな? でもメール送信した後に,"success:sent"なんてメッセージが表示された記憶無いですね.たとえばメッセージでメールを送った場合はmessage/send.phpからmessage_post_message()が呼ばれ,そこからlib/moodlelib.phpのfunction email_to_user()で送信される.実際の送信はこの関数の中で,class get_mailerのインスタンスを作成して...ああ,もう,この辺で.

 この先でsend_message()に繋がっているのかどうかは調べるのを止めますが^^; successs:sent が画面に出ない以上はエラーも表示されない? でもエラーログには残して欲しいなぁと思うのですが,上記の感じですと,ErrorInfoが利用されていないので送信できなかったら,ハイそれまでよ,という風に見えるのですが如何でしょう...

 とりあえずEUC-JPである必要は無いように見えます.でもこの辺りはトラブルシューティングの立場から見て,エラーメッセージの取り扱いをハッキリとして欲しいですね.ものがメールなので,メール送信できなかったというメールを管理者に送る訳にはいかないでしょうけれども,メッセージ機能で管理者に通知するくらいの仕組みは欲しいですね(あるのかな?).

 なにやら脱線気味ですね,失礼.


 ただ,今回のAzusaさんの件も含め,もう少しエラーメッセージ(ログ)の取り扱いに関して強化して欲しいですね.サイトエラーを表示する機能をもう少し強化して,種別ごとに表示できるようにするとか.

Haruhiko Okumura への返信

Re: 可能性の一つとして怪奇現象?

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
> 吉田さんのものも
> lib/phpmailer/language/phpmailer.lang-ja.php
> とかはEUC-JPではないですか?

はい、EUC-JPでした。笑顔
これは、2004年9月26日に翻訳して、PHPMailerの開発者に送った言語ファイルです。

PHPMailerの開発者およびMoodle Trackerに日本語言語ファイルの更新を依頼させて頂きました。

# 名前を入れると犯人を発見しやすいですね。


Mitsuhiro Yoshida への返信

Re: 可能性の一つとして怪奇現象?

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
lib/phpmailer/language/phpmailer.lang-ja.phpの文字コードがEUC-JPからUTF-8に変更されました笑顔

[Diff of /moodle/lib/phpmailer/language/phpmailer.lang-ja.php]
http://cvs.moodle.org/moodle/lib/phpmailer/language/phpmailer.lang-ja.php?r1=1.1&r2=1.1.18.1
Mitsuhiro Yoshida への返信

Re: 可能性の一つとして怪奇現象?

- Tatsuya Shirai の投稿

ご苦労様でした.

思わず飛び火してしまいましたが,きっと将来的な問題を事前に防げたと思います.

(EUC-JPでprintf()したせいで画面や管理者宛メールがおかしくなるなど)

奥村先生もごくろうさまでした.脱帽です^^.

azusa ami への返信

本当にHDDフルの可能性は?

- Tatsuya Shirai の投稿

本当にHDDフルの可能性は無いのでしょうか.でもこれはきっとプロバイダの方が調べてくれていますよね.

 MySQLのログについて調べてみたのですが,ログはバイナリログというものに全て(成功した処理は)記録されているようですね.なお,デフォルトではこのログが消されずにどんどんと増えていきます.

http://wiki.bit-hive.com/tomizoo/pg/MySQL%20%A5%D0%A5%A4%A5%CA%A5%EA%A5%ED%A5%B0%A4%CE%BA%EF%BD%FC

こちらのページにあるように一定期間で古いものは削除する方が良いそうですが,私はまったく設定していませんでした.丁度1年分で,いま1.6GBもあります.利用者の少ない私のMoodleでもこの有様です.もし自動消去されるようになっていたとして,古いバイナリログが削除されると暫くは大丈夫だが,これが溜まってくると問題が発生し始める,という推理は乱暴でしょうか.うん,だとするとログ以外もHDDに書き込めなくなるから,Moodleがサイトとして機能しなくなるはずですよね...

Tatsuya Shirai への返信

Re: 本当にHDDフルの可能性は?

- azusa ami の投稿

どこでHDDがフルかどうかを調べるのかわからないのですが、下記のような表示がありました。

Disk Space Usage
314.33/768000 MB
azusa ami への返信

Re: 本当にHDDフルの可能性は?

- Tatsuya Shirai の投稿

これを見る限り,HDDは余ってそうですね...

あとはデータベースのテーブル(mdl_log)の修復と最適化くらいでしょうか.
phpMyAdminでテーブルのチェックと分析を行ないましたよね.
その下に”テーブルを修復する”と”テーブルを最適化する”があります.
順番に試して見て貰えます?

チェックと分析で特に問題は出ていないのですが,もしかしたら,という儚い希望です.

Tatsuya Shirai への返信

Re: 本当にHDDフルの可能性は?

- azusa ami の投稿
2つともやってみましたが、OKと出てきました・・・
azusa ami への返信

Re: 本当にHDDフルの可能性は?

- Tatsuya Shirai の投稿

 では,ログのデータベースは多分,正常なのでしょうね.

 あと,もしログを全て保存しておくことに拘りが無いようでしたら,以前書きました,

[サイト管理]-[サーバ]-[クリーンアップ]の”ログの保存期間”を例えば90日などに制限することで古いログは削除されるようになります.デフォルトでは「削除しない」になっていると思います.

で様子を見てみては如何でしょうか.

 別のフォーラムでも質問させて頂いたのですが,皆さんはこの設定を何日くらいに設定していますか? 当方は0(削除しない)の設定で1年以上使用しています.先ほど,ログをExcelやテキスト形式でダウンロードしようとしたらタイムアウトしてしまいました...無駄に多くログを残していれば良いというものでは無さそうですね.