• ベストアンサー

Server error! Error 500

RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。

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

  • ベストアンサー
  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.6

その時に出力されているソースは正しいのですか? あと念のためにパーミッションは705になっているのでしょうか?

taropoo
質問者

補足

> あと念のためにパーミッションは705になっているのでしょうか? なってませんでした。(^_^;) 一応動くようになりました。大前進です。パチパチ~!! ただし、文字化けしてます。 自分でわざわざブラウザで文字のエンコードをs-jisに直してやれば見えるようになるのですが、 リロードするとまた文字化けし、ブラウザの設定は西ヨーロッパ(ISO)にもどってしまいます。 なぜでしょう?

その他の回答 (6)

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.7

Content-Type: text/html; charset=$page_code Content-Language: ja <HTML LANG="ja"> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=$page_code"> <TITLE></TITLE> </HEAD> ↑ これくらいやれば何とかなるんじゃないですか? $page_code は使う文字コードです。

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.5

> ブラウザではやはりError 500になってしまいます。 No2 misoka さんのご指摘のmimeヘッダの不備問題はどうでしょうか?

taropoo
質問者

補足

確認はどうすれば出来ますか? nkfでwindows用に変換する前のファイルをコマンドラインで実行した限りでは 1行目に Content-type: text/html と出力されますが。

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.4

> Server error! > Premature end of script headers: tmp.cgi > Error 500 と > [root@ice imGBOOK]# ./im_gbook.cgi > : bad interpreter: そのようなファイルやディレクトリはありません で、スクリプトのファイル名が一致していないのは何故なのでしょうか? あと本当にperlのパスの記述があっているのかわかりませんが、 # perl ./im_gbook.cgi で、そのスクリプトは実行できるのでしょうか。 ちなみにrootで作業されていますが、それはあまりよくないですよ。

taropoo
質問者

補足

tmp.cgiはeucで改行がLFのものです。 一歩前進しました。行末に;が抜けてるところを発見しました。 これでtmp.cgiはコマンドラインでは動くようになりましたが ブラウザで見ると文字化けしてしまいます。 # nkf -cs tmp.cgi > im_gbook.cgi # chmod +x im_book.cgi とやると、コマンドラインでは文字化けしてほとんど読めず、 ブラウザではやはりError 500になってしまいます。

  • misoka
  • ベストアンサー率35% (56/160)
回答No.3

No.2で回答したmisokaです。 バックスラッシュが ¥ になってしまいました。 読み替えてください。 No.1のご回答のとおり、いちどコマンドラインからCGIをperl してみるといいと思います。

  • misoka
  • ベストアンサー率35% (56/160)
回答No.2

print "Content-type: text/html¥n¥n" を出力する前に、 何かが出力されてしまっているとかいうことではありませんか?

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.1

そもそもコマンドラインでは動くのでしょうか?

taropoo
質問者

補足

[root@ice imGBOOK]# ./im_gbook.cgi : bad interpreter: そのようなファイルやディレクトリはありません [root@ice imGBOOK]# となります。perlのインストールされているディレクトリを確認しましたが、 ちゃんと正しく記述されています。

関連するQ&A

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

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

  • 【apache】httpd.confのAddHandlerについて

    掲示板利用させていただきます。 apacheとphpの連携を行う際、httpd.confのAddHandlerを以下のように設定すると、httpでphpを呼び出した際、以下のエラーがでます。 ●設定内容 AddHandler cgi-script .cgi .php ●エラー内容 Premature end of script headers 以下のように設定し直すと、正常に利用できるようになります。 ●設定内容 AddHandler cgi-script .cgi phpとcgiはイコールだと思っていたのですが、違うのでしょうか?? どなたかご教示ください。 よろしくお願いします。

  • 文法はあってるのにサーバーエラーが出る

    perlで構文チェックをしたところ、OKが出たので、 アパッチにて実行したところサーバエラーがでました。 調べたところ、以下のようなエラーが出ましたが、これは、サブルーチンや、ライブラリが呼出されていないのでしょうか?どのように対処すればいいか教えてください。 Premature end of script headers: c:/www/public_html/subsub.cgi Undefined subroutine &jcode::convent called at c:\WWW\PUBLIC~1\SUBSUB.CGI line 8. Premature end of script headers: c:/www/public_html/okikae.cgi Can't locate cgi-bin.pl in @INC (@INC contains: C:/usr/local/lib C:/usr/local/site/lib .) at c:\WWW\PUBLIC~1\OKIKAE.CGI line 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

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • 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
  • ubuntuでサーバーを立てているのですがうまくいきません。

    Linux初心者です。よろしくお願い致します。 ubuntuでwebサーバーをたてているのですがうまくいきません。 現状としては 一、apache2を入れています。 二、index.htmlではローカルIP、ドメインともに見れます。 三、dir.confでAddHandler.cgiをindex.htmlよりも優先順位を高くしたのち、二で接続すると500エラーではじかれます。 四、tail -f で確認すると ・Premature end of script headers: AddHandler.cgi と表示されます。 五、パーミッションはAddHandler.cgiが775、index.htmlが664です。 AddHandler.cgiの中身は以下の通りです。 #! /use/lib/perl use strict; use warnings; print 'index.html'->output; exit; 宜しくご指導鞭撻お願い致します。

  • apache2のエラーページを変更したい

    Redhat9+apache2でwebサイトを構築しました。 サイトの無いページにアクセスしようとしたりCGIでエラーがあった場合 デフォルトで 404エラーなら /var/www/error/HTTPD_NOT_FOUND.html.var 500エラーなら /var/www/error/HTTPD_INTERNAL_SERVER_ERROR.html.var になってますが apacheのエラーページは寂しいので 自分で作り変えたいんですが プログラムの知識がないのでさっぱりわかりません。 簡単に変更する方法ってないんでしょうか? error.htmlを用意して、全てのエラーでこのerror.htmlに飛ばすようにしたいんです。 よろしくお願いします。

  • Apach での SSIとCGIとPHP

    Redhat Linux9.0 Perl-5.8.0-88.3 php-4.2.2.-17.2 ですが。。。 ユーザーディレクトリでPerlが動かなくて困っています。 通常、httpd.conf の <Directory /home/*/public_html> の部分に Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI で動くと思うのですが、なぜかダメでした。 Error message: Premature end of script headers: test.cgi それで、httpd の フォルダを見たところ conf.d/perl.conf というのがあり、そこに次の様に記述したら、perlは動きました。 <Directory /home/*/public_html> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory> しかし、こうすると今度は SSI と PHP が動かなくなりました。 You don't have permission to access the requested object. It is either read-protected or not readable by the server. なお、上のディレクティブをコメントアウトすると、SSI と PHP はOKです。 この場合、PerlとPHPとSSIのすべてを動くようにするにはどうしたらいいのでしょうか? よろしくお願いします。

  • C言語で作成したCGIにて「Internal Server Error」

    こんばんは。CGIについて質問させて下さい。 現象: C言語でCGIを作成し、ローカルで動作しているApacheで 動作確認をしようとしたところ、 「Internal Server Error」が出てしまいました。 質問: 上記の現象が起こったのですが、C言語でCGIを実行するには なにが足りないでしょうか? 環境: OS:WindowsXP Webサーバ:Apache 2.0.61 Cコンパイラ:gcc 3.4.4(cygwin) 状態: ○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。 ○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。 ○httpd.confの設定値(デフォルトから修正した部分) ・ServerName 127.0.0.1:8080 ・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内 Options none → Options ExecCGI ・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi ○Apacheのerror.log ~[error] [client 127.0.0.1] Premature end of script headers: test.cgi ○test.cgiのコンパイル前ソース ---ここから #include <stdio.h> int main(void){  printf("Content-Type: text/html\n\n");  printf("<html><body>Hello, World!</body></html>");  return 0; } ---ここまで ○test.cgiはcygwinにて標準出力を確認済み。 ・・・ちなみにperlでCGIを作成すると表示されます。 (ActivePerlインストール済み) perl側のソース ---ここから #! c:/perl/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "Hello, CGI!"; print "</body></html>" ---ここまで なにかおかしな点がございましたらご指摘をお願い致します。

    • ベストアンサー
    • CGI