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

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm