質問箱/3292

カテゴリ
サマリ更新手順を明示お願いします
バージョン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);
  }
}
?>


*1 もう解決してるなら要らぬ世話ですが
*2 既にあるかも知れませんが
*3 シェルとか難しいことは分からないんで…

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-23 (木) 19:14:24
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.227 sec.

SourceForge