• ベストアンサー

Apacheサーバに接続してcgiが実行できません。

サーバはRedHat Linux8で、クライアントはwin2000です。 表示は 「Server Error! Premature end of script headers: dekiru.cgi 」 と出ます。 過去の質問からsuexecの問題だという情報を見つけ、 /var/log/httpd/suexec.log を見てみると、 「uid: (500/XXX) gid:(500/500) cmd:yyy.cgi cannot get docroot informaiton (/home/XXX)」 という表示でした。 homeやXXX、yyy.cgiは全て755という権限でないといけないということで全て755に変更してサーバを再スタートしましたが、解決しません。 デフォルトで/var/www/cgi-bin以下に 同じyyy.cgiをおいて、 http://サーバIP/cgi-bin/yyy.cgiをブラウザでみると、 実行可能です。 メッセージからドキュメントroot情報がgetできないということですがこれ以上やるべきことが見つからず行き止まり状態です。 他に考えられる原因はありませんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

失礼しました. > デフォルトで/var/www/cgi-bin以下に同じyyy.cgiをおい > て、http://サーバIP/cgi-bin/yyy.cgiをブラウザでみる > と、実行可能です。 を完全に見落としていました.手元にLinux環境が無いので 確認できていませんが,/usr/sbin/suexecを削除してみてください.

yasu1212
質問者

お礼

suexecをsuexecにリネームしてみましたら、 実行できました! やはりsuexecを実行している場合、パーミッションの問題があるんですね。 まあ、パーミッションの対策もしたつもりなんですが、どこか漏れがあるんでしょうね。 とりあえず/home以下でもcgiが実行できたのでよしとします。 大変助かりました。ありがとうございました。

その他の回答 (3)

  • Jack3K
  • ベストアンサー率40% (12/30)
回答No.4

/home/* 以下でCGIが動作しないということですね。 Apacheのデフォルトの設定では/home/以下ではCGIは動作出来ないような設定になっていると思います。 確かデフォルトの設定では/var/www/cgi-bin/以下で動作は出来ます。 /home/以下で動作させる場合は、httpd.confの設定を変更します。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> 辺りの Options の後に ExecCGI を追加すれば動作すると思うのですが。

yasu1212
質問者

お礼

これまた説明不足ですいません。 ExecCGIの追加も済みでした。 次回からは設定ずみの定義も書くように注意いたします。 ご回答ありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

1.httpd.confの設定で、UserDir disableがありましたら、それをコメントにしてください。 2.そして UserDir public_html に変えてください。 3./home/xxxの下で public_html ディレクトリを作成してください。 3../home/xxx/public_htmlの下に実行対象となるスクリプトを入れてください。 4.パーミッションは適切に設定してください。 5.apcheを再起動してください。 /etc/rc.d/init.d/httpd restart でリスタート可能。 (上記はredhat9 Apache/2.0.40での確認です)

yasu1212
質問者

お礼

どういう設定を既にしていたか説明不足でしたね。 すいません。 この設定は既にしていました。 public_htmlの部分はWWWとしましたけどね。 apacheの設定ファイルではなく、suexecに関する問題のほうだったようです。 #2の方のとおりにしたら実行できましたので。 どうもありがとうございました。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

そのエラーが出た場合,まずチェックすべきなのはスクリプトの改行コードです.

yasu1212
質問者

補足

同じcgiファイルを/var/www/cgi-binにコピーして、 http://サーバIP/cgi-bin/yyy.cgi でみると、 うまく実行されるので、 スクリプト改行コードは問題ないと思うのですが。。。 ちなみにスクリプト内容は以下です。 #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "Hello, Linux users!"; \は Linuxから見るとバックスラッシュです。 Hello, Linux users!と表示する簡単なものですが。

関連するQ&A

  • ユーザーディレクトリでCGIの実行ができない。

    環境 FedoraCore2 Apache で、ルートディレクトリでCGIの実行が可能であるのに、ユーザーディレクトリに設置したCGIは500エラーを起こして実行できません。 ブラウザを通してアクセスすると500が出ますが、ユーザーでコマンドラインからCGIを実行すると正常に結果を返します。 なお、コマンドラインでCGIを実行した場合にはログは残りませんが、ブラウザでアクセスした場合、以下のログファイルにログが記録されていました。 error_log [Tue May 16 08:49:21 2006] [error] [client 192.168.11.2] Premature end of script headers: test.cgi suexec.log [2006-05-16 08:49:21]: uid: (503/test) gid: (503/503) cmd: test.cgi [2006-05-16 08:49:21]: cannot get docroot information (/home/test) ちなみに、ネットで見つけた#!/usr/bin/perlの後ろに--を付加する方法では同様の500エラーが出てしまいました。 どなたか、原因及び解決法をご存じの方、ご教授いただければ幸いです。

  • Apache WebサーバでCGIが実行できない

    Apache WebサーバでCGIを実行すると Premature end of script headers というエラーになります。原因が判りません。何方かご教示をお願いします。

  • 【apache】特定のログだけ取りたくない

    こんばんわ。 お世話になっております。 Cent 5.2 Apache 2.2.3 suEXEC環境です。 access_log error_log の事なんですが、 特定の拡張子ではなく、特定のファイルのログを取りたくないのですが、可能でしょうか? 拡張子の場合は、 SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(js)|(swf)|(css)$" nolog SetEnvIf Remote_Addr 192.168.1 no_log こんな感じで色々とaccess_logの方は取得しないようにしてます。 今回は、 Directory index forbidden by Options directive: /var/www/httpdocs/21/ mod_mime_magic: can't read Premature end of script headers: log.cgi 以下略 ↑error_logの一部です。 indexがないですが、cgi(動的ページ)なのでエラーは特に出てません。 mod_mime_magicは使ってません。 Premature end of script headersはsuEXEC環境なので色々と・・・ で、error_log達は表示されてしまうのですが、 このようなエラーログを表示させなくと言うのは出来るのでしょうか? 宜しくお願いします。

  • RedHatLinux9でCGIがうまく動きません。

    RedHatLinux9でApache2x系なのですが、CGIがうまく動きません。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: test.cgi error 500 が出てしまいます。 行った作業としては、 # UserDir public_html の#をはずす #AddHandler cgi-script .cgi の # を外す. # <Directory /home/*/public_html> <略> # Options MultiViews .... <略> # </Directory> の3カ所の # を外し,Options に ExecCGI を追加. /usr/sbin/suexec を削除 という、こちらの掲示板に書いてあった作業を行いました。cgiがまず動くのかどうか確かめるために /var/www/cgi-bin/ にtest.cgi(ほかのサーバで検証したcgiです)を送りましたが見れなかったです。 http://サーバのIP/cgi-bin/test.cgi でよいんですよね、上のcgiを確かめるパス。 これが間違ってたら。。。動かしたいのは一般ユーザの中でcgiが動くようにしたいのです。 パーミッションも問題なかったです。お願いいたします。

  • FC2レンタルサーバーでCGI設置方法についてご存知の方

    FC2レンタルサーバーでCGIを呼び出すとエラーが出て困っております。 FC2レンタルサーバーにCGIを設置できた方どなたかご教授ください。 まず/cgi-bin/ にCGIをおきましてFFFTPにてファイル転送をShift-jis で転送しパーミッションを755にしておりますがエラーが出ます。 尚、プログラムは自宅疑似環境では動いておりました。 後は、文字コード UNIX改行コードも「FC2 Plesk Control Panel」 で「UNIXの改行コードに変換」など色々しましたがわかりません。 /cgi-bin/test/test.cgiというサンプルが動きましたがコピーして 同じ場所にアップすると動かなくなります。 一度だけ色々いじっていたら動きましたがどのような規則があって 動くのか分かりません。 FC2で基本的にCGIを作りアップするまでに気をつけなければ いけないことを教えてもらえませんか? 当方はVista32です。 よろしくお願いします。 -------------------------------------------------------- IEのエラー 500 Internal Server Error サーバーログ [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: saikoro.cgi [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: saikoro.cgi [warn] RSA server certificate CommonName (CN) `plesk' does NOT match server name!?R (※plesk:FC2 Plesk Control Panelだと思います) 大体上の3点のエラーが出ます。(簡単なCGI3種類位で色々試したとき)

  • 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が実行されない:FedoraCore4

    質問が立続きになってしまい申し訳ございません。 私はFedoraCore4を使い自宅サーバ開設に挑んでいます。 なかなか上手くいかずに苦戦中です。。。 さて問題の質問は「Apache2.0でCGIを使いたい」のですが上手くいきません。 このあたりについてご指導をお願いします。 ■現在までの設定■ ApacheがドキュメントルートでCGIを利用できるように設定。  > conf/httpd.conf  の、  > #Add Handler cgi-script.cgi  部分の、  > #  を取り除きました。また、  > <Directory "/var/www/html">  のOptionの部分に、  > ExecCGI  の文字を追加しました。 この上記設定において「Movable Type」を設置し 実際に動作確認が出来ました。 「Movable Type」  > /var/www/html  に、本体とLogを設置しています。 以上は質問とはまったく別件になってしまいましたが、 一般の配布されているCGIスクリプトを設置してみましたが まったく動作しません。 いちおう設置場所につきましては、  > /var/www/html と、  > /var/www/cgi-bin で試しました。実際には > /var/www/cgi-bin に設置するんですよね~?(不安 一般の配布CGIを設置実行するに当たり上記記載の"httpd.conf"の 設定以外にどこか設定する部分ってあるのでしょうか?? どうぞわかり易いご指導をお願いします。

  • Mac OSX LionでCGI/Ruby動かず

    Mac OSX Lionを使っています。 CGIでRubyを使いたいと思い、 以下のことを試したのですが、 500 Internal Server Error となってしまいます。 ◆やったこと 以下のファイルを /Library/WebServer/CGI-Executables に置きました。 (改行コードはLFとしました) --test.cgi--- #!/usr/bin/ruby print "Content-Type: text/html¥n¥n" puts "Hello Ruby" ----- そしてchmod 777としてブラウザから http://localhost/cgi-bin/test.cgi にアクセスしたところ、 500 Internal Server Error となってしまいます。 その際の/var/log/apache2/error.logは、 Premature end of script headers: test.cgi とだけ表示されます。 なんだか一番最初の所でつまづいてしまい、 めげそうになっております。 よろしくご教授ください。

    • ベストアンサー
    • CGI
  • CGIゲーム設置について

    現在、SOLD OUT というゲームのCGIゲームをSAKURAレンタルサーバーに設置しようとしています。 ただし、エラーログが出て、500 Internal Server Error になってしまいます。 エラーログ詳細 suexec failure: could not open log file, referer: fopen: Permission denied, referer: Premature end of script headers: 上記の3行です。 パーミッション変更も試したのですが、だめでした。 アドバイスよろしくお願いします。

    • 締切済み
    • CGI
  • CGIが使えないのはなぜ?

    こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi