- ベストアンサー
malformed header from script. Bad header=No recipient addresses found i
これの意味と直し方を教えていただけませんか? いろいろ調べたのですが、意味も理解できないんです。 ヘッダーがないってことらしいんですが、どこに書いたらいいのか解らず困っています 。 どなたかご教示お願いします。 あと、こんなエラーも出ました 。 Attempt to free unreferenced scalar at /usr/local/apache2/htdocs/***.cgi line 75., referer: http://***.***.jp/***.cgi ***.cgiは、上記ソースの物です。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>print<<"EXIT"; 上記の意味するところは””内の文字のみが書かれている行が現れるところまでの文字を一気に画面に表示するという意味です。(ヒアドキュメント表示といいます。Googleなどで検索してみて下さい) 先程の例で言えば、 <html> ....... </html> までの文をブラウザに対して表示、すなわちページを一気に表示できるというわけです。 ですので””の中は EOLだろうが、EXITだろうがかまわないのです、が・・・・問題が1点。 EXITはCGIのexit関数と見間違えるので、 他の言葉にした方が良く、意味のある「段落の終わり」という意味で私は "EOL"を使っています。(End Of Line) 多分、EXITというのがまずいのではないでしょうか? 一回、その部分を EOL に変えてみては? EOL という文字は、1行単独で存在する必要があります。 (他の文字は一切入れない)
その他の回答 (1)
- hegemonism
- ベストアンサー率53% (37/69)
CGIスクリプトからブラウザに吐き出すときに、 コンテントタイプがきちんと指定されていないのではないでしょうか。 print<<"EOL"; Content-Type:text/html <html> <head> <title>サンプル</title> </head> <body> サンプル </body> </html> EOL Content-Type:text/html行のすぐ下に 空の行(改行のみ)を入れておきます。 (ヘッダと本文を分けるセパレータの役目をします)
補足
アドバイスありがとうございます。 cgiの内部を調べたのですが、 print<<"EOL";ってところが無く、print<<"EXIT"; なら有ったのですが同じでしょうか? サンプルで記載していただいたものは、ちゃんと表示できました。 よろしければ、再度教えていただけないでしょうか?
お礼
回答ありがとうございました。 EXITをEOLに変えて、教えていただいたページを熟読して、ソースを見直したら正常に動きました。 本当に助かりました。 ありがとうございました。