- ベストアンサー
ApacheでのCGIについての質問
今Apacheを使っているのですが、 サポートにしたがってfirst.plで動作確認もしたのですが、どうしてもInternal Server Error になってしまいます。エラーログを 見てみますと [Sun Apr 18 11:54:57 2004] [error] [client 127.0.0.1] couldn't spawn child process: c:/program files/apache group/apache/cgi-bin/first.pl と出ています。どなたか解決策をご存知の方が いらっしゃいましたらよろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
エラーログを見る限りWindowsで動かそうとされているようですね。(このような質問の場合、環境等を明記しておいたほうが正確な回答を得られます) httpd.confの設定は正しく行っていますか? デフォルトでは、拡張子.plはcgi実行の対象になっていません。拡張子を.cgiにするか、どうしても.plのまま実行できるようにしたければ AddHandler cgi-script .cgi の行を探し出し、後ろに.plを付け加えてください(その後、Apacheの再起動が必要です)。 あと、スクリプトの先頭行に #!C:/perl/bin/perl.exe を付けていますか?(上記はPerl.exeの存在するパスです)。 まさかPerlをインストールしてないなんてことはないですよね?
その他の回答 (6)
- daibutsuda
- ベストアンサー率34% (268/780)
#2です。 言葉足らずで失礼しました。 スクリプトにエラーがある=2行目以降のPerlスクリプトにエラーがある、でした。 #6さんのおっしゃるとおり、1行目のPerlパスに間違いがある場合子プロセスの起動エラー(couldn't spawn child process)になりますね。 質問者さんがおっしゃっておられる「スクリプトに問題はない」というのは、コマンドラインで実行した場合のことを指しておられるのだと思われます。 コマンドラインで実行すれば、1行目は注釈文に過ぎないため、Perlインタプリタは無視しますので・・・。
- xjd
- ベストアンサー率63% (1021/1612)
>ちなみに#3さんへ。スクリプトエラーならcouldn't spawn child processエラー >にはなりませんから、 エラーになります。 1行目のパスに間違いがあると、以下のエラーが出力されました。 [Mon Apr 19 00:39:27 2004] [error] [client 127.0.0.1] : couldn't spawn child process: G:/Apache/Apache2/cgi-bin/printenv.pl
- daibutsuda
- ベストアンサー率34% (268/780)
#2です。 蛇足ですが、httpd.confを書き換えた後Apacheはちゃんと再起動されていますよね? Apacheのプログラムメニューの中に「Control Apache」→「Restart」があったと思いますが、httpd.confを書き換えるたびにこのRestartを実行しないといけません。 あと、「Test configuration」を使うとhttpd.confにエラーがないかどうかをチェックしてくれますので、再起動前に一度チェックをしておきましょう。
- daibutsuda
- ベストアンサー率34% (268/780)
#2です。 ScriptAliasesの設定にもAddHandlerの設定にも問題がないとすると、Perlのパスが間違っているくらいしか可能性が考えられませんね。 C:/perl/bin/perl.exe にperl.exeはありますか? もしないなら、perl.exeのあるパスをスクリプトの先頭行に書くようにしてください。 これでも駄目、ということでしたらいったんApacheおよびActivePerlをアンインストールし、インストールしなおすことをお勧めします。 ちなみに#3さんへ。スクリプトエラーならcouldn't spawn child processエラーにはなりませんから、スクリプトに問題があるかどうかは現時点では問題ではないです。
- xjd
- ベストアンサー率63% (1021/1612)
CGIに関係ありそうなhttpd.confの箇所を抜き出してみました。 こちらの環境ではCGIは問題なく動いています。 LoadModule cgi_module modules/mod_cgi.so ScriptAlias /cgi-bin/ "G:/Apache/Apache2/cgi-bin/" <Directory "G:/Apache/Apache2/cgi-bin"> Options ExecCGI AddHandler cgi-script .cgi .pl >スクリプトのほうは確認しましたが >問題はありませんでした。 問題ない、と判断した人は誰ですか?
補足
サポートに書いてあったものと照らし合わせたり あるCD付きの本を購入したときについてきたときの テストプログラムでやってみまして 間違いがないか何度も見てみました。
- xjd
- ベストアンサー率63% (1021/1612)
質問文だけでは情報不足ですし、「サポート」が何を意味するのか、 わかりませんが、 スクリプトの1行目はどうなってますか? ちゃんとperl.exeの場所を指定していますか? まちがっていたら、明らかにそのエラーがでます。 #!/usr/bin/perl #!c:/perl/perl.exe など
補足
スクリプトのほうは確認しましたが 問題はありませんでした。ほかにもテストCGIも やってみましたが同じようにエラーが出ます。
補足
ActivePerlをインストールしてcgiにも関連付けしてあります。あとスクリプトのほうも確認しましたが先頭行等は問題ありませんでした。.plを付け加えてみたり テスト用のcgiも試しましたが同じ症状でした。ご返答の程、よろしくお願いいたします。