ご連絡ありがとうございました.
> フィードバックを使われてはいかがでしょうか。
> フィードバックオプションのユーザ名を記録するを
> "ユーザ名を記録し、回答とともに表示する"
> にしておけば、誰の入力した結果かが表示されます。
> 分析タブから結果のEXCEL出力が可能です。
> (出力したEXCELファイルのdetailedシートに名前と回答内容があります。)
Excelファイルのdetailsedシートに名前らしきもの(文字化け)と回答内容が入ってきました.
文字化けで読めないので,いったんCSVフォーマットで保存し,秀丸でUTF-8で読み込みましたが依然文字化けが残っています.どこが問題なのかご教示いただければありがたいのですが.
T. Fujino
アドバイスありがとうございます。
ちなみにエクセル・ファイルを添付いたします。何かお気づきのことがありましたらお願いします。
以上
T.Fujino
添付して頂いたfeedback.xlsの中身をバイナリエディタで見てみました.文字コードはシフトJISで記録されていますね.私の手元で作成したfeedback.xlsではUnicode(UTF-16)です.
ご利用のMoodleのバージョン,サーバの情報,feedbackモジュールのバージョンも必要ですね.
過去の”フィードバックモジュール”に関する投稿を検索すると,いくつかの文字化けに関する情報が投稿されています.たとえば,これも関係があるかも知れません.
http://moodle.org/mod/forum/discuss.php?d=97116
やはりサーバの来歴を知りたいですね.
なお,Excelエンコーディングの設定は以前からUnicodeでしたか? 他の機能においてExcelファイルのダウンロード(たとえばユーザ/バルク処理など)で文字化けは発生しませんか?(実際にはExcel作成に使っているコードは別ですが).
また,config.phpには以下の2行が記述されていますか?(後者は今回,無関係だと思います)
$CFG->unicodedb = true; // Database is utf8
$CFG->unicodecleanfilename = true;
アドバイスありがとうございます.
> 添付して頂いたfeedback.xlsの中身をバイナリエディタで見てみました.文字コードはシフトJISで記録されていますね.私の手元で作成したfeedback.xlsではUnicode(UTF-16)です.
> ご利用のMoodleのバージョン,サーバの情報,feedbackモジュールのバージョンも必要ですね.
Moodleのバージョンは1.9.5+,サーバーはWindows XP,feedbackモジュールはhttp://moodle.org/mod/forum/discuss.php?d=62973からダウンロードし,feedback_17.zipとなっています.
> なお,Excelエンコーディングの設定は以前からUnicodeでしたか? 他の機能においてExcelファイルのダウンロード(たとえばユーザ/バルク処理など)で文字化けは発生しませんか?(実際にはExcel作成に使っているコードは別ですが).
設定を特に変更していませんから最初からUnicodeです.また,ユーザ/バルク処理で選択したユーザリストをダウンロードしても文字化けは発生しません.
> また,config.phpには以下の2行が記述されていますか?(後者は今回,無関係だと思います)
$CFG->unicodedb = true; // Database is utf8
$CFG->unicodecleanfilename = true;
両方とも記述されていませんが?
以上何かお気づきの点がありましたらお手数ですがお知らせください.
T.Fujino
$CFG->unicodedb = true; // Database is utf8
$CFG->unicodecleanfilename = true;
は,多分,本件とは関係ありませんが記述した方が良いでしょう.
サーバがWindowsXPとのことで,(これも直接的な関係があるかどうかは不明ですが)fs_moodleのご利用をお勧めします.手前味噌ではありますが(http://www.suzuka-ct.ac.jp/mech/moodle/course/view.php?id=30).
文字化けを発生させるのはExcelだけでしょうか.画面上(MoodleをWebブラウザ経由で利用して)では文字化けは発生していませんか?
試しにconfig.phpに上記2行を追加した後に,現状でfeedback.xlsをダウンロードして見る.次いで,新たに別のフィードバックを作成してダウンロードして見て頂け無いでしょうか.無関係だとは思うのですが,少しだけ気になります.
> $CFG->unicodedb = true; // Database is utf8
> $CFG->unicodecleanfilename = true;
> は,多分,本件とは関係ありませんが記述した方が良いでしょう.
> サーバがWindowsXPとのことで,(これも直接的な関係があるかどうかは不明ですが)fs_moodleのご利用をお勧めします.手前味噌ではありますが(http://www.suzuka-ct.ac.jp/mech/moodle/course/view.php?id=30).
ご助言ありがとうございます。これだけ日本語で問題があると検討せざるをえませんね。
ちなみに、現在動作中のMoodleにfs_moodleを追加することはできるのでしょうか?
> 文字化けを発生させるのはExcelだけでしょうか.画面上(MoodleをWebブラウザ経由で利用して)では文字化けは発生していませんか?
以前にご相談しましたが、カレンダの年、日が文字化けしています(未解決)が、それ以外は文字化けはありませんでした。
> 試しにconfig.phpに上記2行を追加した後に,現状でfeedback.xlsをダウンロードして見る.次いで,新たに別のフィードバックを作成してダウンロードして見て頂け無いでしょうか.無関係だとは思うのですが,少しだけ気になります.
やってみましたがだめでした。
またよろしくお願いします。
以上
T.Fujino
fs_moodleではデータベースに対する修正は全く行っていませんので,現在のMoodleに対応するバージョンを利用すれば一発で移行できます.
たとえば今のmoodleフォルダをmoodle2とでもリネームし,fs_moodleのzipを展開すると得られるmoodleフォルダを代わりに置きます.moodle2のconfig.phpをmoodleフォルダにコピーするだけです.config.phpに相当するfs_moodle専用の設定ファイルであるfsconfig.phpをmoodleフォルダに作成する必要がありますが,(現バージョンでは)管理者でログインすれば自動的に雛形がコピーされます.セキュアなRSS用の秘密鍵2個だけはコピーされませんので,エディタ(BOMなし,UTF-8対応)で追加する必要がありますが,雛形のfsconfig.phpのコメントを読んで頂ければ分かると思います.
もし,fs_moodleに変えることでfeedback.xls内の文字化けが直るのであれば,fs_moodleで対応した箇所が影響しているのでしょう.もしダメならば,また考えないといけませんね.
なお,fs_moodleから元のmoodleに戻すのも一発です.moodleフォルダを別の名前にリネームし,元のmoodleフォルダであったmoodle2フォルダをmoodleに戻すだけです.
#ただし,fs_moodleパッケージのMoodleのバージョンは現在のバージョン(version.phpを見てください)と同一に合わせないと不具合が出る可能性はゼロではありません.一応,2~4週間程度の遅れで最新のMoodleに対応しています.
ご連絡ありがとうございます.
> config.phpに相当するfs_moodle専用の設 定ファイルであるfsconfig.phpをmoodleフォルダに作成する必要がありますが,(現バージョンでは)管理者でログインすれば自動的に雛形 がコピーされます.
現バージョンとは,1.9ということでしょうか?
> セキュアなRSS用の秘密鍵2個だけはコピーされませんので,エディタ(BOMなし,UTF-8対応)で追加する必要がありますが,雛 形のfsconfig.phpのコメントを読んで頂ければ分かると思います.
管理者でログインすると自動的に作成されるfsconfig.php内のコメントを読めばわかるということでしょうか?
現在のmoodleは1.9.5+です.fs_moodleの方は,現状では1.9までしかなく,1.9.5+はまだ対応されていないようですが1.9を使用しても大丈夫でしょうか?
お手数をおかけしますがよろしくお願いします.
以上
T.Fujino
Moodleのバージョン番号が分かりにくいですね^^;
大丈夫です,fs_moodleもMoodle1.9.5+です.申し訳ないですが,ダウンロードしたfs_moodleのversion.php(lib/fs_moodleフォルダのversion.phpではなく,moodleのversion.phpです)を見て,現在ご利用のMoodleと日付のほぼ一致するものを選んでください.同じMoodle1.9.5+でもデータベースが微妙にアップグレードされていたりしますが,ほとんど支障はないはずです.
現バージョンというのはfs_moodleのバージョンです.いま3.18.01くらいだったと思います.4.0からはfsconfig.phpの扱いを変更する予定である,という意味での注記ですので大丈夫です.ただ,もしかしたら自動的にfsconfig.phpをmoodleのルートフォルダにコピーする機能は止めにしたかも知れません(スミマセン,自分で作っておきながら忘れています).自動コピーを行わない場合でも,きちんと何をどうしたら良いかをメッセージ表示するようになっていると思いますのでご安心下さい.最悪,fsconfig.phpが存在しなくても動くようには作ってあります(サーバOSの種類を判別して適当な設定を初期値として利用します).
> 無関係かも知れませんが,日本語の言語パックの更新を試して見て下さい.サイト管理ブロックの「言語 設定」-「言語パック」です.
更新されています.
> あとはphp.iniの設定ですね.これはfs_moodleでしたら,fs_moodleの設定表示,で確認できます.サイト管理ブロックの 「サーバ」-「fs_moodleの設定表示」で表示される画面で,”サーバの設定”を選んで下さい.画面の一番下に,php.iniの現在の設定と,推 奨する設定が表形式で対比して表示されます.もし異なるようでしたらphp.iniを修正した後にApacheを再起動し,改めてこのメニューで設定を確 認して下さい.
「fs_moodleの設定表示」が表示されませんが?
fs_moodleに切り替わっていないのでしょうか?
お手数ですがご助言お願いします.
> fs_moodleは深くMoodleに食い込んでいますので,fs_moodleらしさを表に出さずに動作することはできません.やはり実際に呼び出されているパッケージがfs_moodleではない可能性が一番高いでしょう.極端な話,現在のmoodleというフォルダの名前をmoodle3などの名前に変えてしまえば,ApacheはMoodleにアクセスできずエ ラーを発生するはずです.また,lib/fs_moodleの名前をlib/fs_moodle2などに変えてしまえば,ログイン画面も表示されません. ちょっと試してみて頂けますか.
moodleをmoodle 3にするとエラーが発生しましたが,fs_moodleをfs_moodle2にしても特に問題ありませんでした.
以上試した結果です.
展開したfs_moodleパッケージに標準のMoodleパッケージが上書きされたか,あるいは一部だけコピーされた可能性がありますね.
1.ダウンロードして展開したfs_moodleのzip書庫の正確な名前を教えて下さい.
2.moodle/lib/setuplib.php(setup.phpではありません)の頭に,以下のような記述があるかどうか確認して下さい.正しいfs_moodleパッケージでしたら以下の記述があるはずです.
<?php // $Id: setuplib.php,v 1.22.2.6 2009/05/08 21:30:31 skodak Exp $
// These functions are required very early in the Moodle
// setup process, before any of the main libraries are
// loaded.// (FS_CONVERTER): 以下1行を追加(最重要)
// require_once($CFG->libdir.'/fs_converter.php');
require_once($CFG->libdir.'/fs_moodle/fs_index.php'); // fs_moodle2.0以降
// (FS_CONVERTER): ここまで追加
fs_moodleパッケージは標準のMoodleのソースの各所に大量の修正が加わっています.moodle/lib/fs_moodleフォルダをコピーしただけではfs_moodleにはなりません.moodle/lib/setuplib.phpでmoodle/lib/fs_moodle/fs_index.phpを読み込まなかった場合は,他の箇所でこのライブラリが提供する関数を呼び出し,そして存在しないので大量のエラーを発するはずです.
> 展開したfs_moodleパッケージに標準のMoodleパッケージが上書きされたか,あるいは一部だけコピーされた可能性がありますね.1.ダウンロードして展開したfs_moodleのzip書庫の正確な名前を教えて下さい.
fs_moodle3-18-01-weekly-19_20090916.zipです.
> 2.moodle/lib/setuplib.php(setup.phpではありません)の頭に,以下のような記述があるかどうか確認して下さい.正しいfs_moodleパッケージでしたら以下の記述があるはずです.
<?php // $Id: setuplib.php,v 1.22.2.6 2009/05/08 21:30:31 skodak Exp $
// These functions are required very early in the Moodle
// setup process, before any of the main libraries are
// loaded.// (FS_CONVERTER): 以下1行を追加(最重要)
// require_once($CFG->libdir.'/fs_converter.php');
require_once($CFG->libdir.'/fs_moodle/fs_index.php'); // fs_moodle2.0以降
// (FS_CONVERTER): ここまで追加
上記の記述があります.
以上どうぞよろしくお願いします.
ふむ.以上の話から総合的に考えると,やはりmoodle/config.phpの$CFG->dirrootの設定ミスである可能性が濃厚です.
たとえば,D:\htdocs\moodle にfs_moodle,D:\htdocs\moodle2にオリジナルのMoodleがインストールされていると仮定します.この場合,D:\htdocs\moodle\config.phpで,
$CFG->dirroot = 'D:\htdocs\moodle';
と指定されているのが正しい.このようになっているでしょうか.$CFG->wwwrootもmoodleであって,moodle2を指し示していては駄目です.でもこれは多分,正しく設定されているでしょう.逆にmoodle2にWebブラウザ経由でアクセスしようとしてもアクセスできないはずです.
申し訳ありませんが,moodle2フォルダをまったく別のドライブやフォルダに一時的に移動(コピーではなく,移動してみて貰えませんか? moodleフォルダにWebブラウザでアクセスすると,デフォルトの設定に基づいてApacheはmoodle/index.phpを読み込んで実行します.そしてmoodle/index.phpがまず何よりも先に,moodle/config.phpを読み込みます.そしてその後,どのファイルをライブラリとして読み込めば良いのかを全てmoodle/config.phpの$CFG->dirrootのパスに基づいて処理します.極端な話,moodleフォルダにindex.phpとconfig.phpが存在するだけでも動きます(勿論,そのためにはmoodle2フォルダのソースが必要です).
> ふむ.以上の話から総合的に考えると,やはりmoodle/config.phpの$CFG->dirrootの設定ミスである可能性が濃厚です.たとえば,D:\htdocs\moodle にfs_moodle,D:\htdocs\moodle2にオリジナルのMoodleがインストールされていると仮定します.この場合,D:\htdocs\moodle\config.phpで,$CFG->dirroot = 'D:\htdocs\moodle';と指定されているのが正しい.このようになっているでしょうか.
そうなっています.
>$CFG->wwwrootもmoodleであって,moodle2を指し示していては駄目です.
moodleのURLになっていますが.
移動すると,「正常に接続できませんでした」というエラーが発生しました.
以上お忙しいところ大変申し訳ありませんがどうぞよろしくお願いします.
では,ほぼ確定です.
なんらかのメカニズムにより,WebブラウザでMoodleにアクセスした際にfs_moodleではなく,標準のMoodleをアクセスしに行っています.一番考えられるのがconfig.phpの設定で,次に考えられるのがApacheの設定です.でも,moodleフォルダを改名するとアクセス不能になることから考えるとApacheでリダイレクトするなどの指定がされているようには見えません.
セキュリティ上の問題が無いようでしたら,HDDのどこにfs_moodleのmoodleフォルダが存在し,そのmoodleフォルダのconfig.phpの$CFG->dirrootと$CFG->wwwrootがどのように設定されているのか,示して頂け無いでしょうか.このままでは平行線です.より詳細な情報の提示が不可欠です.
> セキュリティ上の問題が無いようでしたら,HDDのどこにfs_moodleのmoodleフォルダが存在し,そのmoodleフォルダの config.phpの$CFG->dirrootと$CFG->wwwrootがどのように設定されているのか,示して頂け無いでしょう か.このままでは平行線です.より詳細な情報の提示が不可欠です.
fs_moodleは,C:\xampplite\server\moodleに存在します.また,それ以外の情報は以下のとおりです.ただし,URLは外部からはアクセスできないはずです.
$CFG->dirroot = 'C:\xampplite\server\moodle';
$CFG->wwwroot = 'http://fujino.etc.kanazawa-it.ac.jp';
以上よろしくお願いします.
C:\xampplite\server\moodle\config.phpを別の名前に変えて,http://fujino.etc.kanazawa-it.ac.jp'アクセスをすると,config.phpが存在しないのでInstallagionの画面(インストーラの初期画面)が表示されるはずです.もしInstallationの画面が表示されないならば,そもそもC:\xampplite\server\moodleへアクセスしていません.C:\xampplite\server\moodle2にアクセスしているということになります.
(いくつかの実験結果には反しますが)
もう一つ確認するべきポイントは,Apacheのhttpd.confの設定です.これはfs_moodleを展開する前も後も変更を加えていませんよね? もしこのファイルの中のDocumentRootの設定を変えてしまっていたのでしたら元に戻して下さい.
後はもうお手上げです.私の方から提供しました情報を元にApacheの設定やWebサーバの仕組みなどを勉強して,試行錯誤して頂くしかありません.試行錯誤した過程および疑問点を漏らさず報告して頂ければ,各々については回答できると思います.
実環境を見てみないと判断も実験もできません.どなたか身の回りにApacheやPHPに詳しい方はいませんか?
> C:\xampplite\server\moodle\config.phpを別の名前に変え て,http://fujino.etc.kanazawa-it.ac.jp'アクセスをすると,config.phpが存在しないので Installagionの画面(インストーラの初期画面)が表示されるはずです.
Installation画面が表示されました.
> もう一つ確認するべきポイントは,Apacheのhttpd.confの設定です.これはfs_moodleを展開する前も後も変更を加えていませんよね?
変更していません.
> 後はもうお手上げです.私の方から提供しました情報を元にApacheの設定やWebサーバの仕組みなどを勉強して,試行錯誤して頂くしかありません.試行錯誤した過程および疑問点を漏らさず報告して頂ければ,各々については回答できると思います.
実環境を見てみないと判断も実験もできません.どなたか身の回りにApacheやPHPに詳しい方はいませんか?
詳しい人がいないので困っています.
また何か気がついたことがありましたらどうぞよろしくお願いします.