カテゴリ | |
サマリ | [xrea] あるとき突然、ヘッダとフッタを残して何も表示されなくなった |
バージョン | 1.4.4 |
投稿者 | フォルグロス |
状態 | 完了 |
投稿日 | |
お世話になります。
当方XREAのs68サーバーにpuwikiki1.4.4を設置しております。
今日の昼には正しく表示・編集できていたのですが、先ほどみたらヘッダ部とフッタ部のみ表示され、肝心の内容が無くなっていました。
思い当たる原因などありましたらご教授いただけると幸いです。
- 設置
- XREA s68(Linux,Apache)
- pukiwiki 1.4.4
- 300ページくらいはある。
- ことの経緯
- 今日の12時ごろ、wikiをオンラインから編集。
- リンク切れのものを複数作成
- 他と重複のものを整理して削除を複数
- ?cmd=linksを実施(ページ更新後にたまに壊れるので念のため実施)
- pukiwiki全体を差分ダウンロードしてバックアップ
- 出かける
- 今日の17時半、戻ってきてアクセスすると現象が発生していた
- 発生中の現象
- ヘッダとフッタだけで、中身が何も表示されない
- エラーは表示されない
- init.phpのerror_reporting(E_ALL);を実施してみたもののparaedit.incからnoticeが5件ほど出るほか不審なものはとくに見当たらない
- define(test,1);はdefine('test',1);に書き直しなさい系エラーのようです
- 新規作成や編集は出来る。新規作成・編集したあとはその内容が正しく表示されるようになる
- こちらの調査結果
- FTPでのぞいてみると/wiki/の下にファイルは丸々残っているようなので、データがなくなっているわけではない
- しかし、そのページにアクセスしてもページ新規作成モードになる
- httpで各ページのバックアップにアクセスしても「ありません」が表示される
- 壊れる前のページの一覧は残っている
- 凍結しておいたページも同様に壊れている
- FTPでパッとみる限り、ファイルの更新日付で今日なにかトラブルを引き起こす更新は見当たらない
- 単語検索は正しく単語を検索し(つまりファイルが読めている)、検索結果を表示する。ただしリンクをクリックするとページが無く、新規作成モードになる
- ここ半月は設定の変更はしていない
- サーバー管理者から特に制裁があった旨の連絡も心当たりもない。wiki以外のコンテンツに問題はない。ディスク容量は十分に余っている
データファイルがあるのに表示されないのがなんとも疑問なので、さてどこを調べたものか…
- 自分もxrea(s23とs79)にwikiベースのサイト(自分は1.4.3)作ってまして、全く同じ状況です。自分が調べた範囲ですと、↑の状況に加えて、
- 現在ある(はずの)ページと同じ名前で新しいページを作成すると、「wiki」フォルダ内に、「以前作成したページと同じ名前+「0」.txt」という名前のファイルが作成される。
といった事が起こるのは確認できましたが…。xrea/Pukiwikiに何が起こったんでしょう…。ちなみに、同じくxreaで1.4.5_1で作ってる別サイトは問題なく動いてるようでした。 -- zk
- 非常にとりあえずですが、上記状況から、ページ名のエンコード・デコード回りに何かあるんだろうということで、「func.php」内の
// ページ名のエンコード
function encode($key)
{
return ($key == '') ? '' : strtoupper(join('',unpack('H*0',$key)));
}
// ページ名のデコード
function decode($key)
{
return ($key == '') ? '' : substr(pack('H*','20202020'.$key),4);
}
の部分を、1.4.5_1の「lib/func.php」から拝借して、
// ページ名のエンコード
function encode($key)
{
return ($key == '') ? '' : strtoupper(bin2hex($key));
// Equal to strtoupper(join('', unpack('H*0', $key)));
// But PHP 4.3.10 says 'Warning: unpack(): Type H: outside of string in ...'
}
// ページ名のデコード
function decode($key)
{
// Warning: pack(): Type H: illegal hex digit ...
return preg_match('/^[0-9a-f]+$/i', $key) ? pack('H*', $key) : $key;
}
に書き換えたら一応無事に動いてるみたいです。PHPド素人が原因とかよく分からないままやってることなので、もしかしたら何か危うい部分があるかもしれませんが。とりあえずご参考までに。-- zk
- 14日にphp4のバージョンを13日出た4.4.2に変更したとか
http://sb.xrea.com/showpost.php?p=72862&postcount=50
http://www.php.net/release_4_4_2.php --
- なるほど、バージョンアップで挙動変更だったんですね(怖いな) 上記変更でこちらも動作確認が取れました。ありがとうございます。 -- フォルグロス
- PukiWiki1.3でも 上の書き換えで動作確認できました。 --
- PukiWiki1.4.3でも 上の書き換えで動作確認できました。感謝。 --
- ありがとうございます。私もこれで解決しました。 -- たこぶり
- しばらく手を付けてなかったので、これを機に1.4.6にしてしまいました。ここに書いている人達は、当然バージョンアップという選択も含め総合的に判断して、部分的な修正で古いものをそのまま使っているのだろうけど、一応。 --
- 1.4.5以前のpukiwikiをベースにスキンを大幅に弄ってしまってサクっと乗りかえれない人とかは多いかも…。自分が正にそんな感じです。今回の不具合が発生した原因は1.4.4以前のfunc.phpのエンコード/デコードの仕様に起因するものなのか、PHPそのものの仕様変更に起因するものなのか…、後者は考えにくいけど気になるますね。。 --
- 1.4.4や1.4.5のスキンは1.4.6でも動くことになっているので、やってみて駄目なら(情報をまとめて)質問箱に来て下さい。上の差分が肝なのであれば、そこはPHP pack() や unpack() の挙動に対応した部分です(See dev:BugTrack2/31, dev:BugTrack/767) -- henoheno