- - PR -
Windows環境でCGIの動作設定がうまくいかない
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-06 19:37
はじめまして。HGと言います。
自宅のPCでCGI(Perlにて)を動かす環境を作っている最中なのですが、 どうしてもInternal Server Errorが出てしまいます。 本来、この「Windows Server Insider」の会議室に投稿すべき内容なのか 判断し難かったのですが、環境がWindowsXP(HomeEdition)であった為、 こちらに投稿させて頂きました。 まず、動作環境ですが、 OS:WindowsXP HomeEdition Apache:1.3.24 Perl:ActivePerl 5.8 Server:localhost(127.0.0.1) です。 httpd.confの設定ですが、ネット上でゴロゴロ出ている変更対象となる 箇所を修正しました。 ちなみにCGIを動作させたいパスは、 [Apache] ←apacheインストール時に作成されたフォルダ(以下、同環境) |--[cgi-bin] | |--CGI格納 | |--[htdocs] |--HTML格納 です。(特別フォルダの作成や指定は行っていません) ■httpd.conf 修正箇所 --------------------------------------------- <Directory "C:/Program Files/Apache Group/Apache/htdocs"> #ExecCGIを追記 Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mod_alias.c> <Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> </IfModule> <IfModule mod_mime.c> #以下の3行がコメントされていたので有効に設定 AddHandler cgi-script .cgi AddType text/html .shtml AddHandler server-parsed .shtml </IfModule> 上記を修正後、apacheをRestart。 ■実行してInternal ErrorになったPerlの内容 --------------------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\\n\\n"; print "CGIテスト"; exit; (ファイル名は test.cgi) ・CGIファイル自体に記述間違いが無いかをDOS窓で試しました。 C:\\>perl test.cgi Content-type: text/html CGIテスト C:\\> という結果になるのでPerl自体の問題ではない気はしています。 たぶん、httpd.confの記載で何か足りないのか、間違った記載をしている のかと思っています。 ・Apache自体の動作確認 URLに http://127.0.0.1/ を指定すると、 「あなたの予想に反して、このページが見えているでしょうか?」のページが 表示されます。 ちなみに、test.htmlを作成しhtdocsフォルダ内に置き、 http://127.0.0.1/test.html を指定すると HTML内容が表示されます。 ですので、apacheは正常に動作しています。 ・CGIの実行環境 URLにhttp://127.0.0.1/cgi-bin/test.cgi を指定すると、 上記の Internal Server Errorとなり、Errorログには、 couldn't spawn child process: c:/program files/apache group/apache/cgi-bin/test.cgi と記載されます。 長文になってしまい申し訳ありません。 アドバイスをお願い致します。 | ||||||||
|
投稿日時: 2005-09-06 20:28
Apacheの場合は、確か1行目を見るはずですよ。 (フゥー) | ||||||||
|
投稿日時: 2005-09-06 21:13
冬寂さん、ご返答ありがとうございます。
>#!/usr/local/bin/perl >#↑ここのパスが合っていない。 >print "Content-type: text/html\\\\n\\\\n"; >print "CGIテスト"; >exit; >Apacheの場合は、確か1行目を見るはずですよ。 ご指摘頂いたとおり、1行目を以下のように修正したところ、 CGIが動作しました。 #!/usr/local/bin/perl ↓ #!C:/perl/bin/perl ネット上のサンプルを流用し何気にコピペをし、コマンドラインでの チェックも正常に通っていたので全然気が付きませんでした。 C:/perl -wc test.cgi test.cgi syntax OK C:\\> 実際、1行目の表現方法の意味がわかってませんでした。 (1)#!/usr/local/bin/perl (2)#C:/perl/bin/perl 相対パスと絶対パスの違いですが、相対の方は実際どこで定義されたパスを 相対として見ているのでしょうか? >(フゥー) 便乗ありがとうございます! _________________ #三|▼Д▼|┛ みんな頭良すぎだぜ! ヽ(▼Д▼)ノ フォ−! #バッチコイ! | ||||||||
|
投稿日時: 2005-09-06 22:03
相対パスと絶対パスって何の話でしょう? (1)と(2)の話しであるなら、どちらも絶対パスです。 (1)はLinux(UNIX系)のファイルシステムでの絶対パスですし、 (2)はWindowsでの絶対パスです。 #ヽ(`Д´)ノ フォー | ||||||||
|
投稿日時: 2005-09-06 22:45
kalzeさん、ご返答ありがとうございます。 すいません、かなりな勉強不足でした。 某サイトで以下の内容を読み理解しました。 # ▽ ---------------------------------------------------------------------- UNIXのファイル・システムがMS−DOSと大きく異なっているのは、 ホーム・ディレクトリというものがあることです。 MS−DOSでは起動時に自分のいるディレクトリは通常ルート・ディレクトリ (¥)ですが、UNIXでは普通のユーザーがログインしたときに入るディレク トリは、ルート・ディレクトリ(/)ではありません。 多くのユーザーを管理するために、ログインしたときに各々のユーザーが入る ディレクトリが予めシステム管理者によって決められています。 このディレクトリのことを ホーム・ディレクトリと呼びます。 # △ ---------------------------------------------------------------------- ※本題から外れてしまい、すいませんでした。 冬寂さん、kalzeさん、今後ともHG(ハードゲイ)を宜しくお願いしますw _________________ #三|▼Д▼|┛ みんな頭良すぎだぜ! ヽ(▼Д▼)ノ フォ−! #バッチコイ! |
1