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でそれを使ったりできないのはどうしてですか?
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に入っています)
まず、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]
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," を読んで下さい。
Perl for Win32 スクリプトが IIS の下で動くようにするには、
以下のステップに従う必要があります。
デフォルトでは、Perl for Win32のinstall.batは .pl 拡張子を PerlIS
にマップします。インストール作業の間に、使われる拡張子を上書き変更することも
できます。
install.bat は、IIS がすでにインストールされている時にこの作業を行いますから、
IIS をまず最初にインストールし、それから Perl for Win32 をインストールする方が
簡単です。
レジストリを変更した後で、Web サービスを再起動させる必要があります。
IIS はサービス
(質問 4.8参照)として走るので、
IIS がファイルと環境変数を確実に利用できるようにする
特別な手続きが必要なのです。 もしあなたが Netscape 1.x servers を使っているのだったら、
Perlスクリプトをバッチファイルで wrap しなければなりません。
下記の Netscape tech notes を参照して下さい:
http://help.netscape.com/kb/server/960513-3.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に
述べられているように、リダイレクションに関連した問題だと思われます。 以下の情報は、O'Reilly WebSite を標準CGI用Perl for Win32
(PerlISではない) が使えるようにセットアップするためのものです。
他の O'Reillyサーバ(WebSite Professional) も同様のハズです。[? -ESP]
WebSiteサーバはサービス(
質問 4.8参照) として走るので、
ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。
以下の教示は、Purveyor 1.2 for Windows NT のものです。
他の Purveyor の製品も同様のハズです。
Perl for Win32 が使えるよう Purveyor を設定する際に問題が出た場合、
Purveyorコントロールパネルアプレットの Logging タブにある
Enable Tracing checkbox を使って、
HTTPリクエストとレスポンスをトレースすることが出来ます。
Purveyorはサービス(
質問 4.8参照) として走るので、
ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。
Microsoft パーソナル Web サーバ for Windows 95 は
Microsoft Internet Information Server (IIS) の スケールダウン版です。
書かれてはいませんが、IIS で Perl for Win32 をサポートするのに使われている
メソッドが、Personal Web Server でも機能するようです。
質問 6.3を参照して下さい。
あなたの Webサーバが載ってないなら、そのサーバのドキュメントの
CGIインタプリタのセットアップの仕方に関するところをチェックして下さい
。一般に、そのプロセスは以下の通りです:
ほとんどの Webサーバはサービス
(質問 4.8参照) として走るので、
ファイルと環境変数を確実に利用できるようにする特別な手続きが必要なのです。
[ここ working with Perl for Win32 に載ってない Webサーバを手に入れたら、お知らせ下さい。FAQ に入れようと思います。 -ESP]
たいていこれは二つのうちの一つです:システムのコンフィギュレーションの失敗か、あなたのスクリプトが CGI スクリプトとしての正しい内容を出力してないか、です。
[他に何か? -ESP]
自分でよくわかっているスクリプトを使い、上記の情報でCGIプロトコル用の
正しい出力が生成されるかチェックします。
(最初にこの FAQ の中のスクリプトを試すといいでしょう)。
テストスクリプトがうまくいくことが確かめてから、あなた自身の
スクリプトにトライしなさい。
何をするにしても、希望は捨てないで。事実、あなたの Web サーバで
Perlスクリプトを走らせることは可能なんですから。本当ですよ。
第一に、警告:これはやってはならない。絶対。たとえあなたがその理由が理解できなくても、です。
今度は説明です:ここでのアイデアは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サーバに固執しないように。
ホームページへ戻る。
このページ頭へ戻る。

6.1. どんなHTTPサーバがPerl for Win32インタプリタをサポートしているのですか?
(http://www.st.rim.or.jp/~nakata/)

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

6.3. Perl for Win32をサポートするよう
Microsoft Internet Information Serverを コンフィグレーションするには
どうしたらいいのでしょうか?
(
http://www.microsoft.com/kb/articles/q150/6/29.htm)
覚えておかなくてはならないのは、あなたの仮想ディレクトリ用URLは
WWWルートディレクトリにあるディレクトリへのURLと重なってはならない、
ということです。例えば、cgi-binという仮想ディレクトリと WWWルートの下にある
本当のcgi-binサブディレクトリを同時に持つことはできません。

6.4. Perl for Win32をサポートするようNetscape Webサーバを
コンフィグレーションするにはどうしたらいいのでしょうか?
http://help.netscape.com/kb/server/960513-125.html

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 を
コンフィグレーションするにはどうしたらいいのでしょうか?
B
6.9. 私のプログラムはコマンドラインからはうまくいくのですが、
CGIスクリプトとして実行すると爆発してしまいます。どうしてでしょうか?
6.10. これはそのような苦闘の丸ごと全部です。;CGIディレクトリにperl.exeを置いたり、URLでそれを使ったりできないのはどうしてですか。
ご意見、ご要望は、
電子メールまたは
投稿にお願い致します。