moodle1.8.1+にバージョンアップしたのが原因かどうか分かりませんが,急にいままで編集できていたWikiが編集できなくなりました.
XMLのパースエラーです.
XML パースエラー: 整形式になっていません。
URL: http://narita.mech.suzuka-ct.ac.jp/moodle2/mod/wiki/view.php?id=320&page=edit/%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86
行番号: 240, 列番号: 6:
//<![cdata[
-----^
これは当方の環境のみで発生していることでしょうか.
それとも他の方の環境でも発生しているでしょうか?
日本語を使わないANKのみのWikiを試しに新規作成しても同じエラーが出ます.
htmlのソースを見てみると,
で,赤く表示されています.この部分がおかしい,特に頭の//の後,<![cdata{がダメであると言っているようです.
そういえば数日内にJavaのアップデートを行なったような気がします.それが影響しているのでしょうか...
javascriptについて全くの無知なので調べてみたのですが,
のように記述するのが一般的なように書いてあります.//はコメントアウトのために入っているとして,<!--と-->が無いのでエラーだと言っているのでしょうか?
Javaのアップデートでエラーチェックが厳しくなった?(Javascriptも影響を受けるものなのでしょうか).
このXMLパースエラーはIEでもFirefoxでも発生します.
<script type="text/javascript" defer="defer"> //<![cdata[ editor_9a0364b9e99bb480dd25e1f0284c8555 = new HTMLArea('edit-content'); var config = editor_9a0364b9e99bb480dd25e1f0284c8555.config; ..... editor_9a0364b9e99bb480dd25e1f0284c8555.generate(); //]]> </script>
そういえば数日内にJavaのアップデートを行なったような気がします.それが影響しているのでしょうか...
javascriptについて全くの無知なので調べてみたのですが,
<SCRIPT TYPE="text/javascript">
<!-- comment to end of line document.write("foo"); // comment to end of line -->
</SCRIPT>
Javaのアップデートでエラーチェックが厳しくなった?(Javascriptも影響を受けるものなのでしょうか).
このXMLパースエラーはIEでもFirefoxでも発生します.
なるほど,この//<![cdata[の記述はXML対応の書き方なのですね.
http://ja.wikibooks.org/wiki/JavaScript_XML
正しそうです.唯一気になるのは<script>と//<![cdata[の間に改行が入っている点だけですね.
echo '//<![CDATA['."\n\n"; // Extra \n is to fix odd wiki problem, MDL-8185
これだと後ろの\nですが,この辺りの改行の扱いにカギがありそうです.
試してみます.
http://ja.wikibooks.org/wiki/JavaScript_XML
正しそうです.唯一気になるのは<script>と//<![cdata[の間に改行が入っている点だけですね.
echo '//<![CDATA['."\n\n"; // Extra \n is to fix odd wiki problem, MDL-8185
これだと後ろの\nですが,この辺りの改行の扱いにカギがありそうです.
試してみます.
自己完結です申し訳ありません.
問題は解決しませんが,原因らしきものが分かってきました.
現象は予想以上に悪い状態にあり,Webページの作成でもHTMLエディタが起動せず,他の箇所でもXMLパースエラーが頻発することが分かりました.1,2箇所を直してどうこうなるような感じではありません.
moodleを古いシステムに戻してもダメでした.
ところがmysqlのデータを古いものに戻すとXMLパースエラーが発生することなく,Wikiの編集が可能になりました.理由はハッキリしませんが,データベースに問題がありそうです.
恥ずかしい話ですが,moodle1.8+をmoodle1.8.1+に更新した際にデータベース等のバックアップを取っていませんでした.今回のバージョンアップではデータベースの更新が行なわれたのですが,この作業が途中で異常終了してしまいました.スクリプトのエラーが原因でしたので,それを直してもう一度試みたのですが,正常にアップデートが終了したのか,失敗したのかよく分からない終わり方をしました.
今から思うと,このデータベースの更新の失敗が一番大きな原因だったのではないかと思います.それがどうしてXMLのパースエラーになるのかは分かりません.
失敗したデータベースのアップデートをやり直す方法は無いでしょうか?
問題は解決しませんが,原因らしきものが分かってきました.
現象は予想以上に悪い状態にあり,Webページの作成でもHTMLエディタが起動せず,他の箇所でもXMLパースエラーが頻発することが分かりました.1,2箇所を直してどうこうなるような感じではありません.
moodleを古いシステムに戻してもダメでした.
ところがmysqlのデータを古いものに戻すとXMLパースエラーが発生することなく,Wikiの編集が可能になりました.理由はハッキリしませんが,データベースに問題がありそうです.
恥ずかしい話ですが,moodle1.8+をmoodle1.8.1+に更新した際にデータベース等のバックアップを取っていませんでした.今回のバージョンアップではデータベースの更新が行なわれたのですが,この作業が途中で異常終了してしまいました.スクリプトのエラーが原因でしたので,それを直してもう一度試みたのですが,正常にアップデートが終了したのか,失敗したのかよく分からない終わり方をしました.
今から思うと,このデータベースの更新の失敗が一番大きな原因だったのではないかと思います.それがどうしてXMLのパースエラーになるのかは分かりません.
失敗したデータベースのアップデートをやり直す方法は無いでしょうか?
なぜかテーマを一旦別のテーマに変更したら直りました.
standartblueを使用しているのですが,これをcameleonに変更したことで,まずWikiの変更が可能になりました.続いて,standardblueに戻したところ,こちらでもWikiの編集が可能です.
一安心と言いたいところですが,状況が好転したのはFirefoxだけで,IEですとテーマを変えたらXMLパースエラーは出ないようになりましたが,その代わり画面が真っ白(HTMLソースは送られてきています.defer属性が有効なので表示されないようです).
ソースを見てみると,meta nameとして送信されてくるWiki名称が文字化けしています.
IEだけ文字化けする,ちょっとどこかで聞いたような話がWikiにまで飛び火してきたのでしょうか.こんな感じです.
ページ名をANK文字で記述すると問題なくIEでも編集可能です.
別に,strsub()等で切られている訳では無いようです.
適当に長い単語をページ名としたら,
standartblueを使用しているのですが,これをcameleonに変更したことで,まずWikiの変更が可能になりました.続いて,standardblueに戻したところ,こちらでもWikiの編集が可能です.
一安心と言いたいところですが,状況が好転したのはFirefoxだけで,IEですとテーマを変えたらXMLパースエラーは出ないようになりましたが,その代わり画面が真っ白(HTMLソースは送られてきています.defer属性が有効なので表示されないようです).
ソースを見てみると,meta nameとして送信されてくるWiki名称が文字化けしています.
IEだけ文字化けする,ちょっとどこかで聞いたような話がWikiにまで飛び火してきたのでしょうか.こんな感じです.
<meta name="keywords" content="moodle, OpenAiMech: チEト縺E繝医ャ繝 " />
ページ名をANK文字で記述すると問題なくIEでも編集可能です.
別に,strsub()等で切られている訳では無いようです.
適当に長い単語をページ名としたら,
<meta name="keywords" content="moodle, OpenAiMech: This page is wrote by only ank character and very very very very very long word " />
このように省略されずに,このvery longな単語のページを編集できましたので.
やはりIEに対してはrawurlencode()して送信するのが解決策なのでしょうか,
mod/wiki/view.phpの380行近辺,
単にいままでFirefoxしか使用していなかったため気付かなかったのでしょうか?
とりあえず上記の修正で「編集」は問題なくIEでも行なうことが出来るようになりました.
ふー,行けども行けども完全マルチバイト対応の道の先は長いですね.
mod/wiki/view.phpの380行近辺,
// $row[] = new tabobject($tabname, $ewbase.'&page='.$tab.'/'.$ewiki_id, $tabname);
$row[] = new tabobject($tabname, $ewbase.'&page='.$tab.'/'.rawurlencode($ewiki_id), $tabname);
何かmoodle.1.8+からmoodle1.8.1+になる際に修正があったのでしょうか.$row[] = new tabobject($tabname, $ewbase.'&page='.$tab.'/'.rawurlencode($ewiki_id), $tabname);
単にいままでFirefoxしか使用していなかったため気付かなかったのでしょうか?
とりあえず上記の修正で「編集」は問題なくIEでも行なうことが出来るようになりました.
ふー,行けども行けども完全マルチバイト対応の道の先は長いですね.