@IT会議室は、2009年4月15日に新システムに移行し、さらに2012年5月29日にITエンジニアに特化した
質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用くださいませ。
- PR -

Windows環境でCGIの動作設定がうまくいかない

1
投稿者投稿内容
レイザーラモンHG
会議室デビュー日: 2005/09/06
投稿数: 3
お住まい・勤務地: アーカイブ星
投稿日時: 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
と記載されます。

長文になってしまい申し訳ありません。
アドバイスをお願い致します。

冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-09-06 20:28
引用:

#!/usr/local/bin/perl
#↑ここのパスが合っていない。
print "Content-type: text/html\\\\n\\\\n";
print "CGIテスト";
exit;


Apacheの場合は、確か1行目を見るはずですよ。
(フゥー)
レイザーラモンHG
会議室デビュー日: 2005/09/06
投稿数: 3
お住まい・勤務地: アーカイブ星
投稿日時: 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

相対パスと絶対パスの違いですが、相対の方は実際どこで定義されたパスを
相対として見ているのでしょうか?

>(フゥー)
便乗ありがとうございます!


_________________
#三|▼Д▼|┛ みんな頭良すぎだぜ! ヽ(▼Д▼)ノ フォ−!
#バッチコイ!
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2005-09-06 22:03
引用:

レイザーラモンHGさんの書き込み (2005-09-06 21:13) より:
実際、1行目の表現方法の意味がわかってませんでした。
(1)#!/usr/local/bin/perl
(2)#C:/perl/bin/perl
相対パスと絶対パスの違いですが、相対の方は実際どこで定義されたパスを
相対として見ているのでしょうか?



相対パスと絶対パスって何の話でしょう?
(1)と(2)の話しであるなら、どちらも絶対パスです。
(1)はLinux(UNIX系)のファイルシステムでの絶対パスですし、
(2)はWindowsでの絶対パスです。

#ヽ(`Д´)ノ フォー
レイザーラモンHG
会議室デビュー日: 2005/09/06
投稿数: 3
お住まい・勤務地: アーカイブ星
投稿日時: 2005-09-06 22:45
引用:

kalzeさんの書き込み (2005-09-06 22:03) より:
引用:

レイザーラモンHGさんの書き込み (2005-09-06 21:13) より:
実際、1行目の表現方法の意味がわかってませんでした。
(1)#!/usr/local/bin/perl
(2)#C:/perl/bin/perl
相対パスと絶対パスの違いですが、相対の方は実際どこで定義されたパスを
相対として見ているのでしょうか?



相対パスと絶対パスって何の話でしょう?
(1)と(2)の話しであるなら、どちらも絶対パスです。
(1)はLinux(UNIX系)のファイルシステムでの絶対パスですし、
(2)はWindowsでの絶対パスです。

#ヽ(`Д´)ノ フォー




kalzeさん、ご返答ありがとうございます。

すいません、かなりな勉強不足でした。
某サイトで以下の内容を読み理解しました。
# ▽ ----------------------------------------------------------------------
UNIXのファイル・システムがMS−DOSと大きく異なっているのは、
ホーム・ディレクトリというものがあることです。
MS−DOSでは起動時に自分のいるディレクトリは通常ルート・ディレクトリ
(¥)ですが、UNIXでは普通のユーザーがログインしたときに入るディレク
トリは、ルート・ディレクトリ(/)ではありません。
多くのユーザーを管理するために、ログインしたときに各々のユーザーが入る
ディレクトリが予めシステム管理者によって決められています。
このディレクトリのことを ホーム・ディレクトリと呼びます。
# △ ----------------------------------------------------------------------

※本題から外れてしまい、すいませんでした。
冬寂さん、kalzeさん、今後ともHG(ハードゲイ)を宜しくお願いしますw

_________________
#三|▼Д▼|┛ みんな頭良すぎだぜ! ヽ(▼Д▼)ノ フォ−!
#バッチコイ!
1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)