カテゴリ | |
---|---|
サマリ | 更新手順を明示お願いします |
バージョン | 1.4.6 |
投稿者 | 山川 |
状態 | 質問 |
投稿日 | 2006-01-09 (月) 05:46:17 |
これは質問ではなくて要望なのですが、
バージョンアップ/更新する際に、どのような手順を踏めばよいのかがすぐに分かる場所に書いてないように思います.私が探した範囲では、落としたファイルのINSTALL.txt, UPDATING.txt, README.txt のいずれにも概略すら書いていませんでしたし、公式ページのトップページからのリンクもなければ、FAQの中にもありませんでした.質問箱の中には、「更新の際にどこが更新されたかすぐ分かるようなツールがほしい」といった(私からすると)高度な質問は見つかりましたが、更新の具体的手順に答える解答は見つけることが出来ませんでした.
問題は、更新という管理者であれば誰でもやらなければならない、しかもセキュリティー上更新を勧めるといって更新作業を迫っているのに、上に挙げたアクセス容易な箇所のどこにもその手順が明記されていないというところにあります.
また、私レベルの者でも、ただ単に新しいファイルを全て古いファイルの上に上書きすれば済む、という問題ではないことはわかります.
実際のところは、ひとまず古いディレクトリをリネームして、落としたファイルを展開して前に使っていたディレクトリ名に変えました.次に、その状態でデフォルトの画面が表示されることを確認した後に、wikiとcacheディレクトリに古いコンテンツを上書きしました.ところが、それだけではプラグインを使った内容やら、メニューのレイアウトが違っていたので、いったん新旧のディレクトリ名を交換して元に戻しました.ところが、この一連の作業はファイル所有者がapacheユーザでしたので、一般ユーザでは操作ができず、rootユーザでやっていたので、コピーをする際に単純にcp -rfとやっていただけでは所有者やタイムスタンプを保持することが出来ず、都度chownコマンドでrootからapacheに所有者を変えていました.そうしたところ、すべてのファイルのタイムスタンプが現在時になってしまい、日付順に並んでいたコンテンツがすべて本日更新になってしまいました.
そうなってから慌てても仕方のない話ですが、もし、仮に更新する際にはどこのディレクトリの内容をどういうコマンドでどこにコピーすればいいか、などの手順を示した、ほんの数行の解説さえ配布文書中にあったら・・・と思うわけです.
<?php function plugin_timestamp_action() { // ファイル名 $file = CACHE_DIR . 'recent.dat'; // ファイル読み込み処理 $handle = @fopen($file, 'r'); if ($handle === false) { return false; } flock($handle, LOCK_SH); $contents = ''; while (! feof($handle)) { $contents .= fread($handle, 8192); } flock($handle, LOCK_UN); @fclose($handle); $contents = str_replace("\r\n", "\n", $contents);// 一応 $contents = str_replace("\r", "\n", $contents);// 一応 $contents = rtrim($contents);// 最後の改行を除く $contents = explode("\n", $contents); // タイムスタンプ置き換え処理 foreach ($contents as $line) { if (empty($line)) {// 一応 break; } list($time, $page) = explode("\t", rtrim($line)); pkwk_touch_file(get_filename($page), $time); } } ?>
<?php function plugin_attachtouch_action() { global $script,$vars; if( isset($vars['msg'])) { foreach( explode("\n", $vars['msg']) as $tl) { list($fn,$ts) = explode(' ',$tl); $fn = UPLOAD_DIR . $fn; if ( !file_exists($fn)) continue; pkwk_touch_file($fn,$ts); } } foreach( glob( UPLOAD_DIR.'/*') as $fn) { $rlist .= basename($fn).' '.filemtime($fn)."\n"; } $str = <<<EOD <form action="$script" method="post" class="memo"> <div> <input type="hidden" name="plugin" value="attachtouch" /> <textarea name="msg" rows="5" cols="80">$rlist</textarea><br /> <input type="submit" name="attachtouch" value="update" /> </div> </form> EOD; return array('body'=>$str); } ?>新旧両方にこれをインストール、旧サイトのindex.php?plugin=attachtouchにアクセスし、そこのテキストエリアの 内容を新サイトのindex.php?plugin=attachtouchのテキストエリアにコピーしてupdate。殆どテストらしいテストはしていません。