SAK ソフトウェア FAQ - IIS、PWS、Perl、ActivePerl
IIS、PWS、Perl、ActivePerl
Q-【IIS、PWS、Perl】 IIS、PWS で Perl が使いたい
■IIS や PWS で CGI を利用するには、Perl を追加インストールします。
http://www.google.com/
で、「iis perl5」で検索すると、Perl5 の所在やインストール方法、設定の
仕方が見つかります。
ただ、レジストリを直接設定したりする必要が今でもあるようです。
私の使用している Perl バージョンは、5.003_07 です。
確か、Pw32i316.exe だったと思います。
ActivePerl5 でも問題なく動作します。
■IIS5、IIS4、PWS の Perl 設定
・レジストリエディタ(regedit.exe) のメニュー、レジストリ、
レジストリファイルの取り込みで、次のどちらかのテキストファイルを
読み込ませるか、手作業で追加します。
尚、c:\perl\bin\ 以外の場所に perl.exe があれば、パス部分を変更して
下さい。(c:\perl\ にインストールすれば、見本のままです。)
・cgi-bin/ などの仮想フォルダを作成します。
== レジストリファイル(2000) ==
〜〜 ↓ ここから ↓ 〜〜
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Script Map]
".cgi"="c:\\perl\\bin\\perl.exe \"%s\" \"%s\""
〜〜 ↑ ここまで ↑ 〜〜
== レジストリファイル(NT4/9x) ==
〜〜 ↓ ここから ↓ 〜〜
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Script Map]
".cgi"="c:\\perl\\bin\\perl.exe \"%s\" \"%s\""
〜〜 ↑ ここまで ↑ 〜〜
■Perl の動作テストには、次のコードを test.cgi などの名前で保存して利用
して下さい。
正常にインストールされていれば「はじめての CGI-Perl ですのん。」と
ブラウザに表示されます。
〜〜 ↓ ここから ↓ 〜〜
#!/usr/local/bin/perl
#// Perl 動作テスト
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>はじめての CGI-Perl ですのん。</P>\n";
print "</HTML>\n";
exit(0);
〜〜 ↑ ここまで ↑ 〜〜
■Perl のバージョンは、DOS プロンプトをオープンして、
perl -v
と入力すると表示されます。
Q-【IIS、PWS、Perl】 IIS、PWS では、CGI カレントが固定になる
■IIS や PWS では、CGI の実行場所がカレントとならず、cgi-bin/ やサイト
トップなどがカレント固定となる場合があります。
SAK Streets 公開フリー CGI は、UNIX サーバの環境を標準的に設定して
パッケージしておりますので、フォルダロケーションパスを少し修正しないと
動作しません。
次の chkcur.cgi を w_s3mbix.cgi などの cgi ファイルと同じ場所に置いて
実行するとカレントの所在がわかります。
「カレントフォルダ」リスト中に w_s3mbix.cgi などが表示されればノーマル
です。どこか別のフォルダがカレントになっていれば、付属の VB 修正ツール
で、フォルダロケーションを修正します。
私のイントラネットでは、cgi-bin/ か、サイトトップがカレントとなります。
/
cgi-bin/
s3mb/
w_s3mbix.cgi
w_sak3/
index.htm
** カレントに s3mb/ 内の w_s3mbix.cgi が表示されず、
cgi-bin/ 内の s3mb フォルダなんかが表示される。
(IIS4、PWS)
** IIS5 に移行したところ、サイトトップが常にカレントとなりました。
お使いの環境により、カレントの位置が違うことになります。
** IIS5.1 では、公開パッケージそのままの設定で動作させることが可能でした。
WindowsXP、ActivePerl での検証です。
但し、環境によっては CGI の実行場所がカレントにならないかもしれません。
■chkcur.cgi - chkcur.lzh 402 bytes ダウンロード
〜〜 ↓ 切り取る場合は、ここから ↓ 〜〜
#!/usr/local/bin/perl
#// 準備
$cufld = './';
$upfld = '../';
#// カレントフォルダオープン
opendir(DIR, $cufld) or die;
@file1 = sort readdir(DIR);
closedir(DIR);
#// 親フォルダオープン
opendir(DIR, $upfld) or die;
@file2 = sort readdir(DIR);
closedir(DIR);
#// HTML ヘッド出力
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<P>▼ フォルダオープンテスト ▼</P>\n";
#// レコード表示
print '-- カレントフォルダ --<BR>', "\n";
foreach (@file1) {
print $_, '<BR>';
}
print '<BR>';
print '-- 親フォルダ --<BR>', "\n";
foreach (@file2) {
print $_, '<BR>';
}
#// HTML テイル出力
print "</HTML>\n";
#// 終了
exit(0);
〜〜 ↑ 切り取る場合は、ここまで ↑ 〜〜
■解説
・この chkcur.cgi は、現在のカレントフォルダとひとつ上の親フォルダの
ファイルリストをブラウザに表示します。
■フォルダロケーションパス修正内容
・パッケージ付属の rs3mb330.exe などの VB 修正ツールでロケーションを
次のように修正します。(修正ツールが付属していないものは手修正です)
尚、s3mb などのフォルダ名は、各 CGI のフォルダ名になります。
この修正を行えば動作します。
また、「アイコン画像ベース URL」についてはカレント問題はないので、
逆に注意して下さい。(w_img/ フォルダのことです。)
-- ひとつ上がカレントとなっている場合(IIS4、PWS) --
掲示板関係
・メッセージデータフォルダ: s3mb/w_s3mb
・添付ファイルフォルダ : s3mb/w_s3mb_b
・CGI カレントへのパス : s3mb
カウンタ関係
・$syslog = 'w_sys';
・$imgfld = 's3cnt';
-- サイトトップがカレントとなっている場合(IIS5) --
掲示板関係
・メッセージデータフォルダ: cgi-bin/s3mb/w_s3mb
・添付ファイルフォルダ : cgi-bin/s3mb/w_s3mb_b
・CGI カレントへのパス : cgi-bin/s3mb
カウンタ関係
・$syslog = 'cgi-bin/w_sys';
・$imgfld = 'cgi-bin/s3cnt';
** 手修正の場合、全ての .cgi ソースの該当箇所を修正して下さい。
ソースによっては、一部の項目がなかったり、まったくない場合が
あります。
該当箇所は、各ソース先頭付近の「#// 準備」の下付近にあります。
** 尚、'/cgi-bin/w_sys' と先頭に「/」を IIS5 で指定すると、うまく参照
しません。「/」がドライブトップになっているのかも知れません。
できるだけ相対 URL で指定する方が無難です。
Q-【IIS、PWS、Perl】 アイコン画像が表示されない
■デザインアイコンなどの画像は、CGI がプログラムオープンするのではなく、
単純なコンテンツ参照になっています。
従って、IIS や PWS でも UNIX と同じです。
常に w_s3mbix.cgi などからの相対 URL を指定します。
cgi-bin/
s3mb/
w_img/
w_s3mb/
w_s3mb_b/
*.pl
*.cgi
以上のロケーションですと、標準の「アイコン画像ベース URL」のままで表示
されます。つまり、「.」のままです。
「アイコン画像ベース URL」についてはカレント問題はないので、逆に注意し
て下さい。
尚、cgi-bin/ 以外に w_img/ を設置する場合、
cgi-bin/
s3mb/
w_s3mb/
w_s3mb_b/
*.pl
*.cgi
w_img/
これだと、「アイコン画像ベース URL」は、「../..」になります。
cgi-bin/
s3mb/
w_s3mb/
w_s3mb_b/
*.pl
*.cgi
image/
s3mb/
w_img/
これだと、「アイコン画像ベース URL」は、「../../image/s3mb」になります。
■cgi-bin/ に HTML コンテンツを設置しないようなセキュリティ設定をされて
いたら、一般の HTML フォルダロケーションに設置して下さい。
「http://sak-main/image/s3mb」のようにフルパスで指定しても OK です。
Q-【IIS、PWS、Perl】 掲示板等で 「** read error」 と出る
■w_s3mb/ や w_s3mb_b/ 等のフォルダ内のファイルが読めていません。 IIS や PWS では、カレントの位置が UNIX と違う場合がありますので、 「Q-【IIS、PWS、Perl】 IIS、PWS では、CGI カレントが固定になる」 を参考にパスの設定をして下さい。 ■IIS、PWS の権限設定でアクセス不能になっいる可能性があります。 アクセス権の設定も確認下さい。
Q-【ActivePerl】 ActivePerl で使えるか
■Apache、ActivePerl を Windows2000 でサービスした場合、標準インストール
で動作させるには、次のような条件があった。
使用したパッケージは、Apache、ActivePerl、PHP、MySQL セットの
phpdev4_5NT.exe
である。ファイルシステムは NTFS。Administrator でテスト。
尚、最近、環境を再構築したところ、w_img/ フォルダのみ www/ 配下に移動
設定すれば、他は公開パッケージのままで動作することを確認しました。
■ActivePerl へのパス。
#!c:\phpdev\perl\bin\perl.exe
これも、環境を再構築したところ、「#!/usr/local/bin/perl」のままで動作
することを確認しました。
■cgi-bin/
・cgi-bin/ 配下には、w_img/ などの直接参照コンテンツを配置してもアクセ
スは拒否される。@nifty 仕様と同等の環境のようである。
通常の www/ 配下へ w_img/ を配置して、ロケーション変更すれば、正常に
動作する。次の @nifty 仕様を参考にして下さい。
Q-【CGI】 @nifty で使いたい
・cgi-bin/ 配下は、標準でディレクトリ参照禁止になっている。
■アクセス権限
・FTP ではなく、直接コピーでファイルを配置した限りでは、何も設定しなく
ても s3cb_e 掲示板の投稿や削除が動作する。
また、ファイルアップロードやその表示もまったく問題なく動作した。