PukiWiki の $script

設置ディレクトリ、アクセス方法に影響されない $script の設定

list( $script, $query ) = split( '\?', $_SERVER['REQUEST_URI'] );

この設定が必要な背景

  • PukiWiki の動作にはこの設定は特に必要ないということになっている
  • ところが $script を設定しないと、例えば localhost に設置した場合はホスト名が実際のものになったり、せっかく index.php という名前にして / だけでアクセスしてもそれが活きない
    • localhost からのみアクセス可能な設定にしたい場合、localhost へのアクセスが実際のホスト名を使ったアクセスになってしまうのはまずい
    • /path/ でアクセスしても /path/index.php になってしまうのはなんとなく気持ちよくない
  • 同じく設定していないと上のホスト名の問題で ssh portforward 経由などの編集が不可能(いくら localhost:8080 などでアクセスしても [編集] などのリンク先が本当のホスト名で置き換わってしまう)
  • 逆に http:// から設定してしまうとやはり portforward 経由や ssl を利用した場合に [編集] などが不可能
  • ホスト名を明記せずに /path/ だけで設定しても、パスが変わるたびに変更しなければならず、同じ本体を共有する Wiki を大量に設置する(WikiFarm のようなもの)場合はそれすら面倒

上の記述ならすべての問題を解決できる。

[2006-01-23 追記]1.4.6 では

Runtime error
Error message : $script: Invalid URI

ってエラーが出ますね。単一の URI しか認識しないんじゃ使いにくいんだってのが分からないのかな。もっと凝った処理で $script を生成しろってことか。いろいろ言われてるように、確かに PukiWiki はどんどん使いにくくなってるかもしれないな。

More