SSIでのファイルのパス指定

*.shtmlから呼び出す*.plや*.cgiやそれらから読み書きするデータファイルを同一のディレクトリ内に置く場合は大した問題は生じない。

しかし、WEB上で両者が異なるディレクトリにある場合はファイルの「位置」の指定(相対パス)についての注意が必要である。特に、ローカルで作成したソースをアップロードする場合にはこの点についての配慮は不可避である。

ここでは*.shtmlがあるディレクトリの下位にsrcディレクトリを作り、そこにSSIの*.cgi関係のファイルを置いている。


実行方法の差

特に*.shtmlファイルからSSIを呼び出す場合、*.plファイルを呼び出す場合と*.cgiファイルを呼び出す場合がある。
  1. WEBではssi_0001〜ssi_0004の方法で呼び出して実行できる。
    ただし、*.shtmlと*.plは同じディレクトリに置く。下位のsrcには置けない。

  2. ローカルでは*.plファイルを呼び出して実行することはできない。

  3. Perl組み込みのSSI(ssi_0003)はWEB/LOCALともに同じ方法で実行できる。
    ただし、日付の表示がローカルの方法ではWEBで文字化けするので、そうならない表示方法にする必要がある。

引数を渡す場合

#include virtualの***.cgiを呼び出しでパラメータを渡す場合、それが日本語の文字列である場合は、ローカルではURLエンコードをした16進文字列で渡さなければ正常にパラメータが取得されない。
たとえば、「篠崎愛」なら「%BC%C4%BA%EA%B0%A6」、「虎南有香」なら「%B8%D7%C6%EE%CD%AD%B9%E1」になる(euc-jp)。

URLエンコード(perl_0047,perl_urlencode)
URLエンコード(php_0025)


SSIの実験用プログラム

SSI用に9個の*.cgi/*.plファイルを作って実験したものである。ローカル用は接頭辞がssim_になる。

【使用したもの】
  1. ssi_0001 : ssi_text.cgi , ssi_count.pl , ssi_datetime.pl , ssi_word.pl
  2. ssi_0002 : ssi_gazourl.pl , ssi_file.pl
  3. ssi_0003 : Perl組み込みのSSIコマンド
  4. ssi_0004 : ssi_textargv.cgi , ssi_textargv_1.cgi , ssi_textargv_2.cgi
【使用しなかったもの】
  1. ssi_gazo.pl (SSIでは画像は表示できない)