質問箱/2316

カテゴリ
サマリPukiWiki中の特定の言葉を一括変換させる方法
バージョン1.4.3
投稿者もりー?
状態完了
投稿日2004-09-01 (水) 13:55:59

質問

PukiWiki中の特定の言葉を一括変換させる方法はないでしょうか?

例えば、私が使っているPukiWikiでは関連ページのリンク表示をオフにしているのですが、「#norelated」がかなり以前に作成したページ全て(全体のページの半分近く)に含まれています。
この他にも、最近まで「#img(,clear)」を使用しておりましたので、これを今後のことを踏まえて、「#clear」に書き換えようと思っても、なかなか大変そうな量です。 :(

Wiki以外のページでのことならwikiディレクトリの中身をDLして、秀丸で何ページかずつにわけて開き、それをFTPで上書きするところなのですが、私の借りているサーバはphpがhttpd権限で動くとやらで、wikiディレクトリの中にあるPukiWikiが作成したファイルがhttpdの所有ファイル*1になっているので、修正済みのファイルを上書きすることが出来ません。

また、私が借りているサーバの会社に問い合わせましたら、今あるwikiディレクトリの中身を全部私の所有に変更することは可能のようです。
(SuExecに変更すればその時に全部変更してくれるそうです。)
しかし、PukiWikiに関してはphpがhttpd権限で動くことから、SuExecに変更しても効果は出ないようです。

単なるものぐさなのかもしれませんが、wikiディレクトリの中の特定の言葉をPukiWiki上で一括で変更できるような方法(特定の言葉の一括書き換え、一括削除)があればと思いました。
良い方法はないでしょうか?
どうぞ宜しくお願いします。

回答

  • dev:開発談義のchmodall.inc.phpでパーミッションを変更 -- 2004-09-01 (水) 21:42:25
    • chmod.inc.phpについて、あるいは「実行権限」と「パーミッション」について誤解されているようです。

      もりーさんの借りている所では、PHPはおそらくSAPIでサーバに接続する 方式なので、生成されるファイルのオーナーはサーバの実行ユーザである httpd(他wwwとかapacheとかだったりします)になっているのでしょう。

      で、生成ファイルのパーミッションはumaskの値による訳で、これが 600(オーナーのみ読み書き可能)であったり644(オーナーのみ読み書き可能、同グループとその他には読みのみ可能)だったりします。 それで「httpdの所有ファイルになっているので、修正済みのファイルを上書きすることが出来ません。」ということが発生してしまうのです。

      この問題の解決法の一つとして、オーナー以外にも書き込みを許可する という手段があります。勿論、この処理はファイルのオーナーたるサーバー 実行ユーザ(あるいはroot)でなければ出来ませんが、chmod.inc.phpはファイルの生成処理と同様に実行されますから、当然にこれを行うことができる訳です。 -- 2004-09-02 (木) 19:59:27

  • パーミッションではなく、実行権限です。(実行権限が変更できないので、パーミッションも変更できません。)
    お教えいただいたchmodall.inc.phpでは実行権限も変更できるのでしょうか?
    宜しければお教えください。
    尚、実行権限について、私がサーバに聞いた質問は次のとおりでした。
    (以下、私のアカウントは「********」にしています。)
    cgiなりphpなりが作成するファイルの所有者が
    FTPでアップロードした場合の「********」ではなく「httpd」になるのですが、
    これをデフォルトで「********」にすることは可能でしょうか?
    もしくは、私のほうで所有者をhttpdから********に
    変更する方法はありますでしょうか?
    これに対してのサーバの会社からの返事は次のとおりでした。
    下記、CGIの場合であればSuExecに移行する事で
    CGIから作成されるファイルもお客様権限の物で作成されます。
    
    ただし、PHPはCGIではない為、SuExecに移行されましても
    webサーバ権限(httpd)で実行される為、ファイルはhttpd権限で作成されます。
    
    下記のディレクトリを拝見したところ、PHPのようですので
    SuExecに移行されましても効果は無いと思われます。
    
    またhttpdがオーナーのファイルを、********をオーナーに変更する事は
    お客様ご自身では基本的に出来ません。
    ※削除等はプログラムやshell等をご利用してする事は出来ます。
    …やはり難しいでしょうか? :( -- もりー? 2004-09-01 (水) 21:57:44
    • 目的は、「既存のwikiディレクトリ内のファイルの所有者およびパーミッションの変更」ですよね。*2
      サーバ内にtelnetもしくはsshでアクセスできるんですよね。そしてファイルのバックアップも削除も可能であれば、(確かに chown コマンドで直接所有ユーザを変更することはできないですけど)私ならこのようにするかなぁ
      $tar cvf wiki.tar wiki  # 対象となるディレクトリのバックアップ(p オプションを付けない)
      $mv wiki wiki.bk        # 該当のディレクトリを別名に変更(あるいは削除)
      $tar xvf wiki.tar       # バックアップしたファイルを展開する
      $chmod -R <モードの指定> wiki # モードの変更
      
      万が一、思ったようにいかなければ...
      $mv wiki.bk wiki
      コマンドの内容を理解できないようであれば、試さないでください。&smile;
      ちなみにWiki上でページの内容を一括変換する方法ですが、私は知りません。 -- jjyun 2004-09-01 (水) 22:20:11
      • 以前、同じような方法(?)を試してみた事があります。
        telnetでwikiフォルダの名前を変え、手元に予めDLして一括変更した新たなwikiフォルダをFTPし、無事動作したのを確認して、リネームしたwikiフォルダをtelnetから削除しました。
        (当然、タイムスタンプが全て書き換わってしまいました。 )
        が、今回の目的は「所有者・パーミッションの変更」よりも「文字列の一括変換」で、出来ればPukiWiki上で出来ればと思っていました。 -- もりー? 2004-09-01 (水) 23:42:47
  • php(もしくはWebサーバで実行可能な言語)で文字列変換スクリプトを作ります。それをwebサーバからwikiのファイルに対して実行させるようにすれば解決しませんか。 -- sky 2004-09-01 (水) 23:18:23
    • そういうスクリプトがあれば、一気に解決しそうです。
      作っていただけるのでしょうか? -- もりー? 2004-09-01 (水) 23:46:25
    • 標準状態のpukiwikiで一括変換する方法はないです(→自作プラグインを作る/既に誰かが作っているなら話は別です)。 /bin/sed を呼び出せるなら、文字列変換スクリプトを組むまでもなくsedスクリプト書いてsystemなりexecで実行してしまえば良いのですけど… -- にぶんのに 2004-09-02 (木) 00:00:42
  • 一応プラグイン作ってみましたけど、怪しすぎるのでテスト中 :( -- teanan 2004-09-02 (木) 00:34:24
    • teanan:自作プラグイン/replace.inc.php
      危険なプラグインですのでバックアップをとってからご使用になることをお勧めします。 -- teanan 2004-09-02 (木) 00:57:32
      • バックアップを取って、使ったら無事出来ました。
        思ったとおりの効果が出て、嬉しいです。 :) ありがとうございました! -- もりー? 2004-09-02 (木) 09:11:03
      • 確かに、バックアップを取ってからじゃないと、変換の指定を間違ったらえらいこっちゃになりますね。(^^;;) -- もりー? 2004-09-02 (木) 09:12:48


*1 「所有ファイル」という表現で合っていますか?
*2 本来の目的を見失っていたので、段落下げました&worried;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-09-06 (月) 20:44:38
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.214 sec.

OSDN