SSIで引数を指定するには?

[上に] [前に] [次に]
とほほ 2000/03/01(水) 01:20:56
メールでSSIについて質問を受けたのですが、よくわからなかったので、
この場で質問させてください。

SSIの、パス名の書き方や、引数の指定方法がサーバーの種類によって
様々なようなのですが、とりあえず、うちの環境(Apache/1.3.9)では
次のような結果になりました。

■ <!--#exec cgi="..."--> の形式の場合・・・

○ 相対パスで呼び出す。
   <!--#exec cgi="./xx.cgi"-->
× 相対パス(..を含む)で呼び出す。
   <!--#exec cgi="../xx.cgi"-->
× 仮想パスで呼び出す。
   <!--#exec cgi="/~xxx/xx.cgi"-->
× 絶対パスで呼び出す。
   <!--#exec cgi="/usr/home/xxx/xx.cgi"-->
× 引数付きで呼び出す。
   <!--#exec cgi="./xx.cgi arg1 arg2"-->
× CGI形式の引数付きで呼び出す。
   <!--#exec cgi="./xx.cgi?arg1+arg2"-->

■ <!--#exec cmd="..."--> 形式の場合・・・

○ 相対パスで呼び出す。
   <!--#exec cmd="./xx.cgi"-->
○ 相対パス(..を含む)で呼び出す。
   <!--#exec cmd="../xx.cgi"-->
× 仮想パスで呼び出す。
   <!--#exec cmd="/~xxx/xx.cgi"-->
○ 絶対パスで呼び出す。
   <!--#exec cmd="/usr/home/xxx/xx.cgi"-->
○ 引数付きで呼び出す。
   <!--#exec cmd="./xx.cgi arg1 arg2"-->
× CGI形式の引数付きで呼び出す。
   <!--#exec cmd="./xx.cgi?arg1+arg2"-->

http://www.imasy.or.jp/~hsdl/imasy-cgi.html
で紹介されている記述とも、どうも食い違っているような気がするのですが、
上記以外の結果になる方は居られますでしょうか?

気まぐれ 2000/03/01(水) 03:38:52
Win32版Apache1.3.9前後?のバージョンはSSIの実装にバグがある
ようです。
# 自分の入っている某MLで話題があったのでアーカイブのURLを調べ
# たら、まだ反映されていなかったので、さらにその元ネタのアー
# カイブ先を書いておきます。

http://apacheml.ecc.u-tokyo.ac.jp/ml/msg03640.html

一応うちでの試験結果です。

Win32版 1.3.6
 #exec cgi
  ○相対パスで呼び出す
  ○相対パス(..を含む)で呼び出す。
  残りは [an error occurred while processing this directive]

 #exec cmd
  全滅

Linux版 1.3.3
 #exec cgi
  ○相対パスで呼び出す
  ○相対パス(..を含む)で呼び出す。
  残りは [an error occurred while processing this directive]

 #exec cmd
  ○相対パスで呼び出す。
  ○相対パス(..を含む)で呼び出す。
  ○引数付きで呼び出す。(注)
でした。

なお #exec cmd での「引数付きで呼び出す。」は引数は渡っていませ
んでした。(バグってこれのことなんでしょうね)
やっぱり引数の渡し方は、hoge.shtml?arg1+arg2 とかしたほうが
いいみたいです。

今、Win32版1.3.12を落としているので近いうちにこちらも試して
結果を報告します。

気まぐれ 2000/03/01(水) 23:28:01
あれっ?なぜに誰もレスが無い?
なんかはずしてます?

お約束どおり結果報告です。

Win32版 1.3.12
 #exec cgi
  ○相対パスで呼び出す。
  ○相対パス(..を含む)で呼び出す。
  ×仮想パスで呼び出す。
[an error occurred while processing this directive]
  ×絶対パスで呼び出す。
[an error occurred while processing this directive]
  ×引数付きで呼び出す。
[an error occurred while processing this directive]
  ×CGI形式の引数付きで呼び出す。
[an error occurred while processing this directive]

 #exec cmd
  全滅

でした。変なの〜(^^;

気まぐれ 2000/03/01(水) 23:47:02
>Win32版Apache1.3.9前後?のバージョンはSSIの実装にバグがある
すいません、これは違うようです。

バグではなくセキュリティーホールの為の仕様のようです。
WARNING-NT.TXT に書いてありました。
嘘ついてごめんなさい。m(_ _)m

とほほ 2000/03/02(木) 01:08:40
[[解決]]
他の方からも、メールで報告をいただいたりしました。
結果は・・・バラバラですね・・・。

結論!
「SSIの#exceでは、絶対パスを参照できなかったり、上のディレクトリ(..)を
含むパスを参照できなかったり、引数を指定できなかったりする。」
ってな感じにまとめるしかないな〜・・・

気まぐれさん、メールで情報をくださった方々、ありがとうございました。

気まぐれ 2000/03/03(金) 01:31:39
>ってな感じにまとめるしかないな〜・・・
と言う事は、まとめた物を掲載してくれるという事ですね。

自分も各種環境での動作が知りたいので、よろしくお願いします。

とほほ 2000/03/03(金) 10:35:07
まとめたいと思ったのですが、「使用できる/できない」にバージョン
との規則性を見つけることができそうにないので、現状は、「できない
場合もあるよ」のようにしかまとめることができませんでした。
すみません(^^;)
http://www.tohoho-web.com/wwwssi.htm

とほほ 2000/03/03(金) 10:40:05
ありゃ、wwwssi.htmアップデートしたつもりが、ファイルの更新に時間
がかかっているようですね。(ファイル転送した後、更新処理が必要なんです。)

もうしばらくすると、2000.3.3版のwwwssi.htmにアクセスできるように
なると思いますので、その時に見てください。(^^;)

# さぁ、そろそろ会社に行かなくちゃ・・・

[上に] [前に] [次に]