アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
これは何を意味しているのでしょうか?(何処が悪いのでしょうか)教えて下さい。

A 回答 (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オプションをつけることをお勧めします。
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。
大変詳しく、感謝します。皆さんのご指摘に沿って、
調べ直します。

お礼のご返事送れて申しわけありません。
gooからの自動メッセージが、不具合なのか、届_なかったので、
気が付きませんでした。

お礼日時:2002/10/22 09:36

追加です。


改行コードはLF(UNIXタイプ)になっていますか?
特に、先頭の
#!/usr/bin/perl
の終わりにCRがついていると、同様のエラーが出ます。windows、mac等で編集された場合、要注意です。LFで保存するか、FTPをアスキーモードでupしてください。

あと、#1さんの回答ですが、
HTTPヘッダーが不完全な場合は、
malformed header from script
と出力されます。
この場合は、そこまでいっていないので、直前の処理のせいとは言い切れませんね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/22 09:29

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
に変えて実行したときのエラーログはどうなっているでしょう?
    • good
    • 0
この回答へのお礼

-wをつけて表示されたのが、質問の中のメッセージでした。
皆さんのご指摘で、場所が何となくつかめそうなので、調べ直します。

お礼のご返事送れて申しわけありません。
gooからの自動メッセージが、不具合なのか、届_なかったので、
気が付きませんでした。

お礼日時:2002/10/22 09:28

> [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#buti …
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/22 09:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!