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 〜〜 ↓ 切り取る場合は、ここから ↓ 〜〜 #!/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 掲示板の投稿や削除が動作する。 また、ファイルアップロードやその表示もまったく問題なく動作した。