質問
- sendmailで500エラー
-
本文:
いつもお世話になっています。
シンクグラフィカさんのフリーメールフォーム
http://www.synck.com/contents/download/cgi-perl/mailform_jcode.html
を利用しています。
メールフォームは完全に自作のものですが、500エラーが出たので、サンプルで動かしてみましたが、動きません。
パーミッションは、説明の通りに755と777(ファイルに応じて)に変更しました。
エラーログには、
Premature end of script headers: send.cgi
とありました。
実は、サイト制作の仕事をしていて、これまでも何度も設置したことがあります。
ロリポップ、ファイアバードで設置経験あります。
(ファイアバードはもちろんクライアント様の契約のものです)
これまではすんなり設置できていました。
今回、他のクライアント様の時と何が違うか考えてみたのですが、
ssl利用の予定があったので、該当ドメインにssl設定をしていました。しかし、証明書の発行の予定がなくなりましたので、結局そのまま放置しており、今回エラーが出た後に、これかな〜?と思って、設定を削除しましたが、エラーは変わりませんでした。
send.cgiと同じディレクトリにある、check.cgiにブラウザからアクセスすると動作しております。
何かアドバイスを頂けたら幸いです。
よろしくお願いいたします。 - 緊急度:急ぎ投稿者:ukkunstampさん投稿時間:2015/10/20 18:01
回答 No.3975
-
本文:
# いまどき、jcode.pl なんて化石みたいなライブラリを使っている... というのは、差し置いておくにしても。
とりあえず、
use Fcntl qw(:DEFAULT :flock);
くらいは入れとかないと、
flock(FH, LOCK_EX);
でエラーになるのでは?
# 5.8.8では大丈夫だったのだっけ?
(仮にperl5.8で動いたとしても、元のperlのターゲットは相当に古いですね。10年以上前のperlの書き方の気がする。)
まあ、他では動いているというのであれば、やっぱり BOM の問題とか、文字コードの問題とか、改行コードの問題とかを一番に疑いますけれども。
他にめだつエラーというと、
if( ... && $conf{'log_passwd'} ne $null){
で、$null が未定義なのだけれど、これは意図的なんだろうか?
- 投稿者:ジョバンニさん 投稿時間:2015/10/20 22:17
質問者からのコメント
親切に説明いただきありがとうございました。
たぶん、昔に作ったものを、問題が発生する度に少しずつバージョン変えて配布されてるみたいです。プログラムは10年以上前のものじゃないかなと思いますが、今までは同じものでも動いていたので、プログラム自体は大丈夫かなーと思います。
BOMで心当たりがあったので、再度ダウンロードしたばかりのものをアップロードして試してみようと思います。
取急ぎ、お礼まで。
回答 No.3976
-
本文:
質問者です。
ご協力ありがとうございました。ご指導の通りに試してみましたが、解決せず、別の方法でsend.cgiを動作させることには成功しました。
TeraPadというソフトを使って、
UTF-8N、LF で保存した結果、動作するようになりました。
が、今度は、
SPAM BLOCK スパム行為の可能性があるため、送信できません。
というエラーがでました。send.cgiの中に、スパムをブロックする既述があったので、コメントアウトしたのですが、SPAM BLOCK とだけ表示されます。
テストで使用しているのは、ダウンロードしたファイルをそのまま、文字・改行コードだけを変えて保存し、アップしています。
使用しているHTMLは、同梱のexample.htmlを使用しています。
他のCGIを使った方が早そうですね・・・(^_^;) - 投稿者:ukkunstampさん 投稿時間:2015/10/21 06:38
質問者からのコメント
何度も申し訳ありませんでした。
TeraPadというソフトを使って、
UTF-8N、LF で保存
の方法で、ダウンロードから再度行い、再アップで行った結果、無事に動作しました。
色々と教えていただき、大変勉強になりました。
デザイナーですが、ちょっとずつプログラムも勉強しています。これからもっと、こういう場合にすんなり対処できるように日々勉強したいと思います。
ありがとうございました。<(_ _)>
回答 No.3973
この回答がベストアンサーです
おそらく、send.cgiを修正して保存するときに、
UTF-8でBOMありで保存しているからだと思う。
BOMなしで保存しないと、「Premature end of script headers」になるのでは?
■
>エラーログには、
>Premature end of script headers: send.cgi
>send.cgiと同じディレクトリにある、check.cgiにブラウザからアクセスすると動作しております。
おそらく、send.cgiは一部書き換えて使うものだと思います。
で、ソースを見る限りでは、原本そのままでも動作するようにみえます。
そこで、send.cgiを原本に置き換えて、同じエラーがでるか?、動作しないのか?を確認されたらよいかと思います。
もし問題なく動作するのなら、修正したことが原因の発端になってると考えられます。
質問者からのコメント
親切に説明いただきありがとうございました。
BOMで心当たりがあったので、再度ダウンロードしたばかりのものをアップロードして試してみようと思います。
取急ぎ、お礼まで。