Perl初心者の部屋  序章  1章  2章  3章  4章  5章  7章  8章  9章  10章
PageID:New Perl-FAQ6J
Last updated:97.04.14

Perl for Win32 Frequently Asked Questions (FAQ)

6章の翻訳者:目黒のさかな(山川)さん<sakana@ask.or.jp>
編訳者:Perl初心者の部屋維持管理者

6. Web サーバのコンフィグレーションとトラブルシューティング

6.1. どんなHTTPサーバがPerl for Win32インタプリタをサポートしているのですか?

6.2. Perl for Win32をサポートするようEMWAC httpsサーバを コンフィグレーションするにはどうしたらいいのでしょうか?

6.3. Perl for Win32をサポートするよう Microsoft Internet Information Serverを コンフィグレーションするには どうしたらいいのでしょうか?

6.4. Perl for Win32をサポートするようNetscape Webサーバを コンフィグレーションするにはどうしたらいいのでしょうか?

6.5. Perl for Win32をサポートするようWebSiteを コンフィグレーションするにはどうしたらいいのでしょうか?

6.6. Perl for Win32をサポートするようPurveyorを コンフィグレーションするにはどうしたらいいのでしょうか?

6.7. Perl for Win32をサポートするようMicrosoft パーソナル Web サーバ for Windows 95をコンフィグレーションするにはどうしたらいいのでしょうか?

6.8. Perl for Win32 をサポートするよう Web Server X を コンフィグレーションするにはどうしたらいいのでしょうか?

6.9. 私のプログラムはコマンドラインからはうまくいくのですが、 CGIスクリプトとして実行すると爆発してしまいます。どうしてでしょうか?

6.10. これはそのような苦闘の丸ごと全部です。;CGIディレクトリにperl.exeを置いたり、URLでそれを使ったりできないのはどうしてですか?


6.1. どんなHTTPサーバがPerl for Win32インタプリタをサポートしているのですか?

CGIスタンダードやISAPIを使用している Windows NT と Windows 95 サーバのほとんどで、Perl for Win32 のスクリプトが動きます。Perl for Win32と共動する サーバとして、次のものが知られています (括弧内はわかっているプロトコルです):

[他に何か? -ESP]

 ヤフーのこのページにWindows, Windows 95, 及び Windows NT向けの Webサーバの一覧があります。

http://www.yahoo.com/Computers_and_Internet/Software/Internet/ World_Wide_Web/Servers/Microsoft_Windows_Windows_95/

(全部一つのURLに入っています)

6.2. Perl for Win32をサポートするようEMWAC httpsサーバを コンフィグレーションするにはどうしたらいいのでしょうか?

 まず、EMWAC のドキュメントを読みましょう。ここです。

http://emwac.ed.ac.uk/html/internet_toolchest/https/scripts.htm

 簡単に言えば、次のステップを従うだけでいいのです。

 EMWAC サーバは、.pl拡張子のあるファイルに対するHTTPリクエストを受けた時、 "perl [filename]"を実行しようとします。 これがEMWAC サーバ上でPerlスクリプトを実行させる唯一の方法です。ですから、 上記のガイドに従って、うまくいくようにして下さい。

 デフォルトでは、Perl for Win32 の install.bat は perl.exe を システムのPATHに入れるようになってますが、 二重のチェックをするに越したことはありません。

EMWAC サーバはサービス (質問 4.8参照) として 走っているので、ファイルとPATHなどの環境変数をアクセス可能にしておくという 特別な手続きが必要なのです。というわけで、スクリプトが読め、 それがコマンドラインから実行できたとしても、 サーバが出来るということには必ずしもならないのです。

 [他に何か? -ESP]

6.3. Perl for Win32をサポートするよう Microsoft Internet Information Serverを コンフィグレーションするには どうしたらいいのでしょうか?

 Microsoft Internet Information Server (IIS)は Windows NT サーバに 同梱されています。Peer Web Services (PWS) は Windows NT ワークステーションに 同梱されています。両製品のコンフィグレーションは、本質的に同じです。まず最初に、IISドキュメントの 第8章、情報の発行とアプリケーションを参考にすると よいでしょう。

 また Microsoft Knowledge Base の記事で、この問題を扱っている "Configuring and Testing a PERL [sic] Script with IIS," を読んで下さい。
(
http://www.microsoft.com/kb/articles/q150/6/29.htm)

 Perl for Win32 スクリプトが IIS の下で動くようにするには、 以下のステップに従う必要があります。

 デフォルトでは、Perl for Win32のinstall.batは .pl 拡張子を PerlIS にマップします。インストール作業の間に、使われる拡張子を上書き変更することも できます。 install.bat は、IIS がすでにインストールされている時にこの作業を行いますから、 IIS をまず最初にインストールし、それから Perl for Win32 をインストールする方が 簡単です。

 レジストリを変更した後で、Web サービスを再起動させる必要があります。

 IIS はサービス (質問 4.8参照)として走るので、 IIS がファイルと環境変数を確実に利用できるようにする 特別な手続きが必要なのです。

6.4. Perl for Win32をサポートするようNetscape Webサーバを コンフィグレーションするにはどうしたらいいのでしょうか?

 もしあなたが Netscape 1.x servers を使っているのだったら、 Perlスクリプトをバッチファイルで wrap しなければなりません。 下記の Netscape tech notes を参照して下さい:

http://help.netscape.com/kb/server/960513-3.html
  http://help.netscape.com/kb/server/960513-125.html

 以下は Netscape FastTrack Server 2.0 の情報です。 他の 2.0 Netscape Servers (Communications, Enterprise) も同様なはずです。 [? -ESP].

 まず最初に、Netscape documentation を読みます。 次に Shell CGI に関する technote を読みます。 ( http://help.netscape.com/kb/server/960804-35.html)

  FastTrack Server上で Perl for Win32 が走るようにセットするには、

 FastTrack server のナイスなところは、Error Log がCGIスクリプトが動作しなかった理由を与えてくれることです。ですから、あなたがコンフィグレーションでつまづいたら、ここをまずチェックするのがいいでしょう。

  Netscapeサーバはサービス( 質問 4.8参照) として走るので、 ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。

 大勢の人が報告するのは、Netscapeサーバと共に Perlプログラムで POST で送られたデータを扱う時の問題です。Netscape は明らかに関連づけを使って スクリプトを走らせ、POST のデータは STDIN に乗せてプログラムに送られます。 ですから、これは質問 4.3に 述べられているように、リダイレクションに関連した問題だと思われます。

6.5. Perl for Win32をサポートするようWebSiteを コンフィグレーションするにはどうしたらいいのでしょうか?

 以下の情報は、O'Reilly WebSite を標準CGI用Perl for Win32 (PerlISではない) が使えるようにセットアップするためのものです。 他の O'Reillyサーバ(WebSite Professional) も同様のハズです。[? -ESP]

  WebSiteサーバはサービス( 質問 4.8参照) として走るので、 ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。

6.6. Perl for Win32をサポートするようPurveyorを コンフィグレーションするにはどうしたらいいのでしょうか?

 以下の教示は、Purveyor 1.2 for Windows NT のものです。 他の Purveyor の製品も同様のハズです。

Perl for Win32 が使えるよう Purveyor を設定する際に問題が出た場合、 Purveyorコントロールパネルアプレットの Logging タブにある Enable Tracing checkbox を使って、 HTTPリクエストとレスポンスをトレースすることが出来ます。

Purveyorはサービス( 質問 4.8参照) として走るので、 ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。

6.7. Perl for Win32をサポートするようMicrosoft パーソナル Web サーバ for Windows 95をコンフィグレーションするにはどうしたらいいのでしょうか?

Microsoft パーソナル Web サーバ for Windows 95 は Microsoft Internet Information Server (IIS) の スケールダウン版です。 書かれてはいませんが、IIS で Perl for Win32 をサポートするのに使われている メソッドが、Personal Web Server でも機能するようです。 質問 6.3を参照して下さい。

6.8. Perl for Win32 をサポートするよう Web Server X を コンフィグレーションするにはどうしたらいいのでしょうか?

 あなたの Webサーバが載ってないなら、そのサーバのドキュメントの CGIインタプリタのセットアップの仕方に関するところをチェックして下さい 。一般に、そのプロセスは以下の通りです:

ほとんどの Webサーバはサービス (質問 4.8参照) として走るので、 ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。

 [ここ working with Perl for Win32 に載ってない Webサーバを手に入れたら、お知らせ下さい。FAQ に入れようと思います。 -ESP]
B

6.9. 私のプログラムはコマンドラインからはうまくいくのですが、 CGIスクリプトとして実行すると爆発してしまいます。どうしてでしょうか?

たいていこれは二つのうちの一つです:システムのコンフィギュレーションの失敗か、あなたのスクリプトが CGI スクリプトとしての正しい内容を出力してないか、です。

[他に何か? -ESP]

 自分でよくわかっているスクリプトを使い、上記の情報でCGIプロトコル用の 正しい出力が生成されるかチェックします。 (最初にこの FAQ の中のスクリプトを試すといいでしょう)。 テストスクリプトがうまくいくことが確かめてから、あなた自身の スクリプトにトライしなさい。

 何をするにしても、希望は捨てないで。事実、あなたの Web サーバで Perlスクリプトを走らせることは可能なんですから。本当ですよ。

6.10. これはそのような苦闘の丸ごと全部です。;CGIディレクトリにperl.exeを置いたり、URLでそれを使ったりできないのはどうしてですか。

 第一に、警告:これはやってはならない。絶対。たとえあなたがその理由が理解できなくても、です。

 今度は説明です:ここでのアイデアはperl.exeを (あなたのサーバでどう設定していようと)自分のCGIディレクトリに置き、 myscript.plを実行するのに次のようなURL構文を使うということです。:

http://soon.to.be.a.victim.net/cgi-bin/perl.exe?myscript.pl

これだと、.plのような拡張子とPerl.exeのようなインタープリタの関連づけを サーバで設定する必要がなく、あなたはその方法を調べあげなくても済みます。

実際、初期の Win32ベースのWebサーバでは(特にNetscape 1.x サーバ)では、 スクリプトファイルとインタープリタの関連づけが不可能だったのです。 この方法はベンダーによって、Webサーバで Perlスクリプトを走らせる実用的な アプローチとして推薦されていたのです。

心がねじ曲がった少しPerlの知識がある人なら、 このコンフィグレーションだと、ハッカーがサーバ上であらゆる種類の おぞましいことを始めることが可能であると分かります。 あるドライブの全ファイルを削除するというようなことを実施するのに、 彼らがやらなければならないのは perl.exe の -e コマンドラインスイッチを使って 作ったURLを送信するだけなのです。:

http://aaaugh.that.hurts.net/cgi-bin/perl.exe?-e?'del%20c:\*.*%20/S%20/Q'

もちろん実際のコンピュータ犯罪者は、こんな粗雑で明々白々たることは 決してしないでしょうが、かわりにこれを出発点として使って、取り返しのつかない ダメージをあなたの組織にもたらすでしょう。

次のURLがこの問題をもっと掘り下げて扱っています:

ftp://cert.org/pub/cert_advisories/CA-96.11.interpreters_in_cgi_bin_dir

Tom Christiansen もまたこの主題で良質の議論を書いています。 UNIX偏執病とでも言うべきに感染されていて、 PCプロフェッショナルを確実に憤慨させますが・・。:

http://www.perl.com/perl/news/latro-announce.html

この問題の言われている一つの解決法は、PL2BAT あるいはあなた自身のカスタムバッチコードを使ったバッチファイルで Perlスクリプトを wrapするというものですが注意して下さい。 これもまた良くありません。 ファイル関連づけを許さないほとんどのプリミティブなサーバはまた、 バッチファイルの後ろにユーザがDOSコマンドを入力するのを許してしまうという バグにとても感染しやすいのです。

 CGIとWebサーバのセキュリティのさらなる情報は:

Web: http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html

CGI: http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt

最後に一言。実にたくさんの Windows NT と Windows 95 用のフリーのWeb サーバがあります。だから決して古い、安全でないWebサーバに固執しないように。


ご意見、ご要望は、 電子メールまたは 投稿にお願い致します。

ホームページへ戻る。

このページ頭へ戻る。