SAK ソフトウェア FAQ - IIS、PWS、Perl、ActivePerl

SAK Streets メインストリート 工房 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 掲示板の投稿や削除が動作する。
    また、ファイルアップロードやその表示もまったく問題なく動作した。
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 工房 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK