• ベストアンサー

error_logファイルの中身で教えて・・「 Premature end of script headers: 」

Perl初心者です。 Perlでスクリプトを書いてます。 うまく動かないのでerr_logファイルを見ると下記の内容になっています。 [error] (2)No such file or directory: exec of /home/***/***.cgi failed [error] [client **.**.**.**] Premature end of script headers: home/***/***.cgi これは何を意味しているのでしょうか?(何処が悪いのでしょうか)教えて下さい。

  • Perl
  • 回答数4
  • ありがとう数8

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

  • ベストアンサー
noname#4147
noname#4147
回答No.4

すでにレスがついていますが... ■No such file or directory: exec of まず、「No such file or directory」の中でも、「exec of」の場合、Perlへのパスが間違っているため実行できないという場合が多いです。 同じ意味で、改行コードがLFでない場合も、制御コードが最後に続いてしまうため、このエラーがでます。 先頭のパスが#!/usr/bin/perl等、正しいか、改行コードがLFか確認してください。 #1や#2でかかれている、スクリプト中の他のファイルやCGIのパスの間違いでは、関数がエラーを戻すだけで、スクリプトのエラーにはなりませんので、今回は違うかと思います。 (dieするように自分で書いた場合は別ですが。) ■Premature end of script headers これは、retrさんの書かれたとおりです。 Content-type: text/html という行を出力する前にエラーでCGIが終了すると全てこのエラーが表示されるので、ほとんと手掛かりになりません。 ちなみに、上の「No such file or directory: exec of」のエラーが解決されても、他にエラーがあれば、またこれが表示されることも考えられます。 #以上、動いているCGIをわざと間違えて検証したので、間違っていないと思います... 私も開発中はパスにwオプションをつけることをお勧めします。

ctpsys
質問者

お礼

ご回答有難う御座います。 大変詳しく、感謝します。皆さんのご指摘に沿って、 調べ直します。 お礼のご返事送れて申しわけありません。 gooからの自動メッセージが、不具合なのか、届_なかったので、 気が付きませんでした。

その他の回答 (3)

  • retr
  • ベストアンサー率75% (30/40)
回答No.3

追加です。 改行コードはLF(UNIXタイプ)になっていますか? 特に、先頭の #!/usr/bin/perl の終わりにCRがついていると、同様のエラーが出ます。windows、mac等で編集された場合、要注意です。LFで保存するか、FTPをアスキーモードでupしてください。 あと、#1さんの回答ですが、 HTTPヘッダーが不完全な場合は、 malformed header from script と出力されます。 この場合は、そこまでいっていないので、直前の処理のせいとは言い切れませんね。

ctpsys
質問者

お礼

重ねて、有難う御座います。

  • retr
  • ベストアンサー率75% (30/40)
回答No.2

Premature end of script headers は、HTTPレスポンスヘッダの出力前にスクリプトが終了してしまっているというエラーで、CGIのエラーとしては、一般的過ぎて、なにが悪いか分かりません。 とにかく、途中にエラーでとまっていることしか分からないです。 No such file or directory: exec of /home/***/***.cgi failed とありますが、スクリプト中で他のCGIをexecしてますか? ファイルやディレクトリのパス(場所)が間違ってないか確認してください。 あと、先頭の/usr/bin/perl等を /usr/bin/perl -w に変えて実行したときのエラーログはどうなっているでしょう?

ctpsys
質問者

お礼

-wをつけて表示されたのが、質問の中のメッセージでした。 皆さんのご指摘で、場所が何となくつかめそうなので、調べ直します。 お礼のご返事送れて申しわけありません。 gooからの自動メッセージが、不具合なのか、届_なかったので、 気が付きませんでした。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> [error] [client **.**.**.**] Premature end of script headers: home/***/***.cgi “ Premature end of script headers” = 「スクリプト・ヘッダーの早すぎる終わり」 = HTTPヘッダーが不完全。 だから、httpdがエラーを報告してます。理由は、その直前の処理のせい。 > [error] (2)No such file or directory: exec of /home/***/***.cgi failed なんかファイルが無いと言われてます。だからCGIが異常終了してるのでしょう。 “No such file or directory”は、UNIXの標準エラーコードENOENT(errno=2)についての、最も一般的なエラーメッセージですね。

参考URL:
http://httpd.apache.org/docs/howto/cgi.html#butitsstillnotworking
ctpsys
質問者

お礼

有難う御座いました。 何となく理解できました。 お礼のご返事送れて申しわけありません。 gooからの自動メッセージが、不具合なのか、届_なかったので、 気が付きませんでした。

関連するQ&A

  • 一つのファイルだけにPremature end of script headers

    CGIが突然動かなくなりました。  昨日まで動いていたcgiファイルが突然表示されなくなりました。  ただ、動かなくなったのはある一つのファイルだけで、他のcgiファイルはきちんと表示されます。  原因はよくわからないのですが、あるソフトウェアをインストールしたらおかしくなって、それをアンインストールしたのですが、変化がありません。  コンソール上ではきちんと出力されます。  大事なファイルなので、きちんと表示させたいのですが、一日格闘しても駄目です。  ヘッダーも統一しているので、動くファイルのものを貼りつけたりしても駄目でした。  他のファイルもすべて駄目になったのであれば、原因はわかりやすいと思うのですが、特定のファイル一つだけというのはどうもよくわかりません。もしも、ご存知の方がいればどうか解決策を提案していただけますか。  ちなみに、エラーログはこのように表示されます。 [Sun Jul 22 12:56:50 2007] [error] [client 127.0.0.1] (2)No such file or directory: exec of '/html_files/cgi-bin/any.cgi' failed [Sun Jul 22 12:56:50 2007] [error] [client 127.0.0.1] Premature end of script headers: any.cgi  どうぞよろしくお願いします。

    • ベストアンサー
    • CGI
  • script headers って?

    NO.202703の質問をしたものです。 1.Premature end of script headers: c:/www/public_htm/up_file.cgi 2.String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" 3.syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" 4.Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 2.3.4.のエラーについては、解決?できました。 (エラー行をコメント(#)にしたりしてるうちに・・・原因はよくわかりませんでしたが・・・) 1.のエラーの意味がわかりません。  script headers って何のことなんでしょうか? ※ このエラーログはApacheのサーバーのログです ※ このCGIは、フォームデータを受けっとてファイルを更新するようになっています。

    • ベストアンサー
    • Perl
  • エラー:Premature end of scriptが発生します。

     csvファイルをデータベースにinsertすると、Premature end of script headersというエラーになり、処理が中断します。  (1) レコード数が2000件ですと、処理は正常に終了します。  (2) エラーでも2131件の書き込みができていました。  (3) サーバーは会社が用意したもので、詳しいこはわかりません。  (4) cgiのパーミッションは755です。  まだ仕事を始めて間もないので、わかりにくい質問かと思われますが、ご回答のほど宜しくお願いします。  

    • 締切済み
    • CGI
  • 自宅サーバーの構築がうまくいきません。

    Linux初心者です。よろしくお願い致します。 webサーバーを公開しようとしているのですがうまくいきません。 OSはubuntuでapacheは2系です。 ルーターを介してindex.htmlをドメインで表示すること(http://ドメイン名)は可能なのですが、AddHandler.cgiにすると500エラーではじかれてしまいます。 以下はtail -fのコマンドで表示される文言です。 ・(2)No such file or directory: exec of 'ディレクトリ/AddHandler.cgi' failed ・Premature end of script headers: AddHandler.cgi 何が原因かわからないのでどなたご指導鞭撻の程よろしくお願い致します。

  • 他のページを見ましたが「Premature end of script headers」について

    C++でCGIを記述しています。 「Premature end of script headers」がでてとれません。 サーバーにログインして、その環境でコンパイルを実施しています。 他のWebページも参照しましたが、「転送のモードが云々」とか、perlのパスが云々とか記述されていますが、関係ないと思っています。 ソースは ------ここから #include <stdio.h> main() { printf("Content-type: text/html\n\n"); printf("test"); } -----ここまで です。 text/htmlの後の改行を増やしたりtestの後に改行をつけたりtype:の後のスペースを取ったりいろいろしましたが、状況は変わりません。 何をどうすればよいのでしょうか。 なお、OSはFreeBSD 4です。

  • CGIエラー

    あるCGIを組んでてアップロードしたらエラーが出ました。 もちろんInternalServerErrorでerror.logには (8)Exec format error: exec of 'ほげほげ/test.cgi' failed Premature end of script headers: test.cgi とありました。(ほげほげは気にしないで^^;) ぐぐって見たものの原因はわからず、簡単なcgiをアップロードしてもこのエラーが出ます。 Shift_JISで改行コードLFにしてます。 ASKIIモードにしました。 ヘッダーも入れてます。 いろんな方法を試しました。 ちなみにレンタルサーバーで、CGIはOKです。 都合上期限がやばいので、すぐに回答お願いします!

  • apacheでcgi

    AddHandler cgi-script .cgiを有効にして.htaccess の中にOptions +ExecCGIAllを記述してhttpd.confのowOverride Options としてcgiを実行しようとしたら下記エラーになりました。 [Thu Nov 15 11:16:54 2001] [error] (13)許可がありません: exec of /home/jin/WWW/cgi-bin/tslbbs.cgi failed [Thu Nov 15 11:16:54 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/tslbbs.cgi それで、 #AddHandler cgi-script .cgi として、 <Directory /home/*/WWW> Options ExecCGI </Directory> にしたら cgiのソースが見えてしまいます。 cgiのPermissionsは755になっております。 ScriptAliasで/cgi-bin/ /home/*/WWW/cgi-bin/を記述してOptions ExecCGIにしてもソースが見えてしまいます。 cgiを実行させるのにはどうすればいいのでしょうか?? (以前Linuxを良くわからないときに(今でも解っていませんが・・)同じような質問をここに挙げてその時は単純な自分の間違いで動かなかったのですが単純なソースのミスでした。それで今度はLinuxをインストールをしなおしたら動かなくなったのです。 http://apachetoday.com/news_story.php3?ltsn=2000-06-05-001-10-NW-LF-SW 等覗いてそれをやっても動かないのです。 多分単純なことなのかもしれませんが行き詰まって困っております。 昨日の質問でユーザーのHTMLが見れないのはURLの指定で最後に'/'をつければ問題なく見れました。今はイントラネットでLinuxを動かしているのですが、実際のインターネットでは最後の/は入れたり入れなかったりでも問題なく見れるのですが、正しくは最後に/を入れるみたいですね。)

  • 500エラーorダウンロードになる。suEXEC

    【環境】 fedora7(さくら専用サーバー Apache(2.2.8) vsftpd(2.0.5-16.fc7) suEXEC cgiを700で動かしたいのですが、 全く動いてくれません。。。 500 Internal Server Error エラーログを一部抜粋しました。 error.log [Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] attempt to invoke directory as script: /home/test1/cgi-bin/test/ [Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Directory index forbidden by Options directive: /home/test1/httpdocs/file/00/, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/log_note.cgi', referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/log_note.cgi' failed, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Premature end of script headers: log_note.cgi, referer: http://ドメイン/ [Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/test.cgi', referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/test.cgi' failed, referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] Premature end of script headers: test.cgi, referer: http://ドメイン/ [Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico suexec.log [2008-05-24 16:58:20]: too few arguments suexec -V の結果 -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html" DOC_ROOTの変更方法も分からず、ずっとhomeでやってたので、 ミスだったのかな?と思い。 /var/以下にcgiを置いてchmodでtest.cgiの権限700にしてしてみましたが、500のエラーでした。 なぜかFFFTPのクライアントからは操作ファイル操作が出来ませんでした。 ユーザー名はapacheグループに属してるだけです。 バーチャルで運営の予定です。 perlのパスは usr/bin/perl test.cgiの先頭は #!/usr/bin/perl です。 suEXECは・・・ chmod 4711 /usr/sbin/suexec でapache再起動後のログに、 [Sat May 24 17:31:04 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) が出ます。 /usr/sbin/httpd -l でチェックすると。 core.c prefork.c http_core.c mod_so.c の4点しかありません。 suexec: disabled; invalid wrapper /usr/sbin/suexec は出ません。 宜しくお願い致します。

    • ベストアンサー
    • 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
  • SESULinux で CGI をするには?

    http://oshiete1.goo.ne.jp/qa3578211.html で質問していた、初心者です。再び、お願いいたします。 LAN の 中だけで Web サーバ を実行しています。 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin というディレクトリで *.cgi が動くようになりました。 ところが、このディレクトリに、置いた *.html ファイルを別のコンピュータから見ようとすると、Internal Server Error となってしまいます。 Apache の error_log では、 (8)Exec format error: exec of '/srv/・・・/*.html' failed そして、 Premature end of script headers: *.html となっています。 この *.html を htdocs というデレクトリに置くと、OK なのですが...。 また、*.cgi ファイルに open(FILE, '>>aaa.txt') or die "$!"; print FILE ("200,$year年$mon月$day日 $hour時$min分\n"); close(FILE) と書くと、WindowsXP, Apache, ActivPerl では、 自動的に、aaa.txt というファイルができて、 そのファイルに 「200,日付時間」 が 書き込まれたのですが、 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin では、 だめでした。これが、できると、大助かりです。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう