*Windows で動かすとページの凍結ができない -ページ: BugTrack -投稿者: [[わたなべ]] -優先順位: 普通 -状態: 提案 -カテゴリー: 本体バグ -投稿日: 2003-02-10 (月) 09:35:07 -バージョン: **メッセージ バージョンて書いちゃだめなんですね。焦りました。配布版の 1.33 で確認しました。 ---- -Windowsの改行コードがCRLFだから発生する問題ですね。 -- [[長月あきと]] SIZE(10){2003-02-10 (月) 11:01:30} -すぐに動かしたいという場合はWindows依存になっちゃいますが、file.phpの152行目(1.3.3の場合)を\nから\r\nに直してあげるととりあえずは動くと思います。 -- [[長月あきと]] SIZE(10){2003-02-10 (月) 11:04:29} -if($lines[0] == "#freeze\n") +if($lines[0] == "#freeze\r\n") -Windowsの改行コード絡みの問題ってBugTrack/123にもありますね。 -- [[長月あきと]] SIZE(10){2003-02-10 (月) 11:34:50} -ページソースの入り口(get_source()あるいは$post['msg'])で'\r'を落とすようにすればいいと思うんですが。ほかに\rが入ってくる可能性がある経路があったかどうか… -- [[ぱんだ]] SIZE(10){2003-02-11 (火) 11:16:55} -そうですね、その方がいいですね…とりあえずこんな感じでしょうか? -- [[長月あきと]] SIZE(10){2003-02-12 (水) 11:02:43} @@ -148,6 +148,7 @@ if($_freeze === true || $_freeze === false) return $_freeze; $lines = get_source($page); + $lines = preg_replace("/\x0D\x0A|\x0D|\x0A/","\n",$lines); if($lines[0] == "#freeze\n") $_freeze = true; -どうせなら、get_source()の中で置き換えてしまいましょう。 -- [[ぱんだ]] SIZE(10){2003-02-13 (木) 15:18:09} file.php // ソースを取得 function get_source($page) { if(page_exists($page)) { - return file(get_filename(encode($page))); + return preg_replace("/\x0D\x0A|\x0D|\x0A/","\n", + file(get_filename(encode($page)))); } return array(); } -Windowsで凍結確認できました。素晴らしいです。 -- [[長月あきと]] SIZE(10){2003-02-13 (木) 15:31:34} -ただ、上記を導入すると#comment、#article、#voteなどのプラグインで必ず更新の衝突が発生するようです。 -- [[長月あきと]] SIZE(10){2003-02-13 (木) 16:04:13} -…そうですね。各プラグイン $digest = md5(@join("",@file(get_filename(encode($...))))) と、html.php/convert_html()内の $digest = md5(@join("",get_source($vars["page"]))); では、digest値が異なってしまいます。 -- [[ぱんだ]] SIZE(10){2003-02-13 (木) 20:27:37} -とりあえず1.3.3では、長月さんの案でいきましょうか。 -- [[ぱんだ]] SIZE(10){2003-02-13 (木) 20:33:52} -全部get_source()に統一((1.4では実施済))するのも手なんですが…プラグインも一緒に、となるとちょっと面倒ですね。 -- [[ぱんだ]] SIZE(10){2003-02-13 (木) 20:40:36} -プラグインも統一となるとかなり大掛りになりますもんね。ちなみに1.4はWindows上で快適に動作してますよ。 -- [[長月あきと]] SIZE(10){2003-02-14 (金) 09:06:33} #comment