• ベストアンサー

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 と出ています。どなたか解決策をご存知の方が いらっしゃいましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

エラーログを見る限りWindowsで動かそうとされているようですね。(このような質問の場合、環境等を明記しておいたほうが正確な回答を得られます) httpd.confの設定は正しく行っていますか? デフォルトでは、拡張子.plはcgi実行の対象になっていません。拡張子を.cgiにするか、どうしても.plのまま実行できるようにしたければ AddHandler cgi-script .cgi の行を探し出し、後ろに.plを付け加えてください(その後、Apacheの再起動が必要です)。 あと、スクリプトの先頭行に #!C:/perl/bin/perl.exe を付けていますか?(上記はPerl.exeの存在するパスです)。 まさかPerlをインストールしてないなんてことはないですよね?

douteiso
質問者

補足

ActivePerlをインストールしてcgiにも関連付けしてあります。あとスクリプトのほうも確認しましたが先頭行等は問題ありませんでした。.plを付け加えてみたり テスト用のcgiも試しましたが同じ症状でした。ご返答の程、よろしくお願いいたします。

その他の回答 (6)

回答No.7

#2です。 言葉足らずで失礼しました。 スクリプトにエラーがある=2行目以降のPerlスクリプトにエラーがある、でした。 #6さんのおっしゃるとおり、1行目のPerlパスに間違いがある場合子プロセスの起動エラー(couldn't spawn child process)になりますね。 質問者さんがおっしゃっておられる「スクリプトに問題はない」というのは、コマンドラインで実行した場合のことを指しておられるのだと思われます。 コマンドラインで実行すれば、1行目は注釈文に過ぎないため、Perlインタプリタは無視しますので・・・。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.6

>ちなみに#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

回答No.5

#2です。 蛇足ですが、httpd.confを書き換えた後Apacheはちゃんと再起動されていますよね? Apacheのプログラムメニューの中に「Control Apache」→「Restart」があったと思いますが、httpd.confを書き換えるたびにこのRestartを実行しないといけません。 あと、「Test configuration」を使うとhttpd.confにエラーがないかどうかをチェックしてくれますので、再起動前に一度チェックをしておきましょう。

回答No.4

#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)
回答No.3

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 >スクリプトのほうは確認しましたが >問題はありませんでした。 問題ない、と判断した人は誰ですか?

douteiso
質問者

補足

サポートに書いてあったものと照らし合わせたり あるCD付きの本を購入したときについてきたときの テストプログラムでやってみまして 間違いがないか何度も見てみました。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

質問文だけでは情報不足ですし、「サポート」が何を意味するのか、 わかりませんが、 スクリプトの1行目はどうなってますか? ちゃんとperl.exeの場所を指定していますか? まちがっていたら、明らかにそのエラーがでます。 #!/usr/bin/perl #!c:/perl/perl.exe など

douteiso
質問者

補足

スクリプトのほうは確認しましたが 問題はありませんでした。ほかにもテストCGIも やってみましたが同じようにエラーが出ます。

関連するQ&A

  • CGIが動きません!!

    CGIが動きません。htmlを表示できる状態です。 エラーログには「 couldn't spawn child process: g:/program files/apache group/apache/cgi-bin/hello.cgi」と表示されています。 どうしたら良いのでしょうか? windouw NT 4.0 + Apache version 1.3.19 + Active Perl version 5.005_03 です。 perlの構文チェックは問題なしです。 httpd.confの設定は下記のようにしました。 1.AddHandler cgi-script .cgi を追加。 2.オプションの設定にExecCGIを追加。 <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory>

  • アパッチでのCGI実行時のエラー(子プロセス生成不可)

    windowsでアパッチを稼動しております。 CGIを動かしてみたのですが、 「couldn't create child process: 22505: 」と プロセスが作成できないとのエラーがでてしまいます。 Perl自体は文法チェックで問題はなく、 perlの置き場所もcgi-bin以下に置いています。 この事象に詳しい方いらっしゃいますでしょうか。 よろしくお願い致します。

  • activeperl5.6が起動できない

    activeperl5.6が動きません。 activeperlをインストールして、apacheのhttpd.confの中身を本を参考に編集しました。 sampleのhello.plというファイルを自分の環境ではc:\www\cgi-binというフォルダーの中にいれ、 ScriptAlias /cgi-bin/ "C:/www/cgi-bin" <Directory "C:/www/cgi-bin"> AllowOverride None Options None AddHandler cgi-script .cgi .pl でcgiの実行を許可して AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl で拡張子とperlを関連付けています。 browserからたとえばhttp://localhost/hello.plを入力すると 実行が許可されていないとブラウザーで表示されます。 Forbidden You don't have permission to access /test.pl on this server. Apache/1.3.39 Server at localhost Port 80 アパッチのエラーログを見ると、 [error] [client 127.0.0.1] couldn't spawn child process: c:/

    • ベストアンサー
    • CGI
  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 AddHandler cgi-script .cgi .plに変更。 exec cmdをHTMLファイルに埋め込みました。 <!--#exec cmd="/PROGRA~1/APACHE~1/Apache2.2/cgi-bin/counter.pl counter"--> インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ   AddType text/html .shtml と   AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。エラーログには ”指定されたファイルが見つかりません。 : don't know how to spawn cmd child process: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/counter.shtml” と記録されていました。 どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくおねがいします。

    • 締切済み
    • CGI
  • apacheでcgiがうまく動かない。cgiが認識されていない?

    すいません、多分基本的な所なのですが、 どうしても分からないので質問させてください。 ■環境------------------------------ ・windowsXP sp2 ・apache1.3.33 C:\Program Files\Apache Group\Apache  現在の状態:html表示可能。httpd.confを変更 ・perl5.6.1 c:\perl  現在の状態:PPMにてimagemagick,DBI,DBD-MySql(だっけ)をインストールしている ・php5.0.4 c:\php ・mysql4.02 C:\mysql ■httpd.confの変更箇所-------------------------------- 337 Options Indexes FollowSymLinks MultiViews ↓ Options Indexes FollowSymLinks ExecCGI MultiViews 538 #!c:/program files/perl/perl ↓ #!C:/Perl/bin/perl 720以降に追加 AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl 825以降に追加 AddHandler cgi-script .cgi AddHandler cgi-script .pl ■printenv.plの内容-------------------------------- #!C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } -------------------------------------------------- 上記のような環境で、いまPERLの動作確認を行っています。 http://localhost/cgi-bin/printenv.pl http://localhost/cgi-bin/printenv.pl PLファイルを指定しても実行されず、ダウンロードされてしまいます。 cgiに拡張子を変えても同じでした。 エラーというわけでもない為、エラーログにも何もかかれません。 何が問題なのでしょうか?

    • ベストアンサー
    • CGI
  • Perlと画像について

    やまとです。 CGIから、画像を呼び出しています。  CGIファイル:Apache/cgi-bin/test.cgi  画像ファイル:Apache/cgi-bin/image/test.gif  test.cgiでの画像呼出部分:<image src=./test.gif> しかし、画像が出てきません。なぜでしょう? 自分なりに調べてみましたが、大分原因が分かってきました。 error.log見てみると、 c:/apache/cgi-bin/test.jpg is not executable; ensure interpreted scripts have "#!" first line couldn't spawn child process: c:/apache/cgi-bin/top_image.jpg と言うエラーでした。 どうやら、画像ファイルをCGIスクリプトとして見てしまっているようです。 (↑考え合ってますよね) おそらく、httpd.confがおかしい(?)Aliaseですかね(?) ここまで調べてみましたが、対処方法がわかりません。 どなたか、どこを、どう直せば良いのか、 出来るだけ詳しくご教授願えないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Perl
  • apache1.3とperlでCGI

    超初心者です。 windows XPでapache1.3 と active perl 5.1.2をインストールして、 CGIを動作させたいと考えています。 http://localhostを入力してapacheの起動画面は表示されていること を確認しました。 その後httpdconfに下記を追加しました。 AddHandler cgi-script .cgi .pl AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl <Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> C:\Program Files\Apache Group\Apache\cgi-binに既存で存在する printenv.plを実行しようとするとファイルのダウンロードの画面が出てきて 実行されません。printenv.plは下記のようにperl.exeへのパスだけ変更しました。 #! C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } どうすればCGIが実行できるようになるのでしょうか? ご教授ください。よろしくお願い致します。

    • ベストアンサー
    • CGI
  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • apacheでcgi-binの中のファィルをcgiと

    アップローダーを設置したくて apacheでローカルで確認しているのですがcgi-binの中に.gifや.jpgなどを入れると ブラウザで The server encountered an internal error or misconfiguration and was unable to complete your request. と出てしまい.gifや.jpgが表示されません。設定をどのようにすれば表示されるのでしょうか? .cgiや.plはcgiとして認識されて動作しています。

  • CGIを開けない。。。

    apacheとphpを設定して動作確認したあとに、cgiも操作したいので、Active Perlというものをインストールしてみました。 phpは、http://localhost/で「C:/Program Files/Apache Software Foundation/Apache2.2/htdocs」のフォルダーを参照できるのですが、cgiを開くときには、どこのフォルダーに格納し、URLをどうすれば宜しいのでしょうか?(因みにcgi-binとhtdocsに格納し、http://localhost/***.cgiで試したのですが駄目でした。) Active Perlインストール後に変更した場所 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AddHandler cgi-script .cgi .pl なお、perlの設定には、こちらhttp://www.jisaba.net/xp/actpeal/04.htmのサイトを参考にしました。 環境はWindowsVistaです。 どなたか宜しくお願い致します。

    • ベストアンサー
    • Perl

専門家に質問してみよう