CGI-BBS > 情報収集 > フォームメール > さくらインターネットでInternal Server Errorなってしまう。


カレッヂ
カレッヂ


質問者 mack  投稿日 2013/3/8(金) 18:13:45
こんにちは。お世話になります。よろしくお願いいたします。

さくらインターネットのサーバに、フォームメール(WebFORM)を設置したく、
まずはテストからと思い、

perlのパスを
#!/usr/local/bin/perl -> #!/usr/bin/perl

sendmailのパスを
$sendmail = '/usr/lib/sendmail'; -> $sendmail = '/usr/sbin/sendmail';

のように、さくらインターネットの仕様の通りに設定してテストしたのですが、
sample.htmlの「確認」ボタンから、内容確認画面を経て「送信」ボタンをクリックすると、


Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, support@sakura.ad.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


と表示されてしまいます。

どなたか、さくらインターネットでフォームメール設置をされた方は
いらっしゃいますでしょうか?

また、さくらインターネットでCGIを設置する際の注意点等ございましたら、
アドバイスをいただけますと幸いです。

よろしくお願いいたします。

【プロバイダ】http://support.sakura.ad.jp/manual/rs/tech_cgi.html
【習熟度】多少の設置経験

質問者 mack  [削除]  投稿日 2013/3/8(金) 20:05:33
サーバのエラーログを引っ張ってきました。

[error] defined(%hash) is deprecated at ./jcode.pl line 684., referer: http://xxx/webform.cgi
[error] \t(Maybe you should just omit the defined()?), referer: http:/xxx/webform.cgi

jcode.plの684行目は何も書かれていない改行だけの行です。

どういうことなのでしょうか?
回答者 ひろ  [削除]  投稿日 2013/3/10(日) 11:52:23
こちらへのコメントは久しぶりです。
自分もさくらを利用してますが問題なく動作してます。

cgiのパーミッションは 704 

#!/usr/local/bin/perl -> #!/usr/bin/perl

sendmailのパスを
$sendmail = '/usr/lib/sendmail'; -> $sendmail = '/usr/sbin/sendmail';

でいけると思いますがおかしなエラーが出る場合は、エディタやftpの設定(改行コード)も併せて確認してみてください。
質問者 mack  [削除]  投稿日 2013/3/11(月) 12:52:39
ひろ様

こんにちは。アドバイスありがとうございます!

さっそく、ご指導の通りにパーミッション704(と705)を試してみたのですが、
症状は改善しません(T_T)。サーバーのエラーメッセージもログも同じです。

エラーログをみると、jcode.plのなかでエラーとなっていますので、
jcode.plがいけないのかと思い、jcode.pmを試したりもしていますが
ダメです。

当方はWindowsですので、エディタはメモ帳、FFFTPを使用でASCII転送しています。

困ってしまって、途方にくれています。

回答者 ひろ  [削除]  投稿日 2013/3/11(月) 15:18:58
windows のメモ帳は、余計なコードを付け加えてしまい CGI の編集ではトラブルメーカーなのでNGなのです。

とりあえず エディタは Terapad を使ってください。
http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

それで今のパソコン側、サーバの側の両方の CGIファイル一式をいったんすべて削除して、
CGIのダウンロードからやり直して再度 Terapad で編集して再設置してください。

質問者 mack  [削除]  投稿日 2013/3/11(月) 16:25:44
ひろ様

度々ありがとうございます!

さっそくご指導の通りに、Terapadで編集してアップしてみましたが、
結果は同じでした。

さくらインターネットのCGIのFAQをみると、「同梱のプログラム(例えばjcode.plなどの)
ファイルのバージョンが古すぎる」という問題がアップされていますが、これはそもそも
jcode.plが古いためサーバ側で対応していない、ということを意味しているのでしょうか?

Perlのヴァージョンとの相性は問題になりますでしょうか?

Jcode.pmをアップして、require './jcode.pl'; を "use Jcode;" にしてみたのですが、
これも上手くいっていません・・・

ひろ様のフォームメールは問題ないとのことですので、何がいけないのか不思議です。

すっかり困っています(苦笑)
回答者 ひろ  [削除]  投稿日 2013/3/11(月) 19:15:37
お役に立てずすいません。
ちょっと調べたのですが、 Perlのバージョンが12以上のものは jcode.plでエラーが出てしまうケースがあるようです。 

人様のブログですが
http://tottoco.tsuyushiba.com/Entry/20/
エラー内容が、似てますのでこれに該当するかもしれません。

まあ jcode.pl は Perl4 時代の骨董品なので互換性に問題が出ても不思議ではないかと思います。

知識があれば CGI を改造してもよいと思いますが、こだわりがなければ別のCGI(jcode.pl が使われてないもの)や
PHP製のメールフォームでもよいのではないでしょうか。
質問者 mack  [削除]  投稿日 2013/3/12(火) 08:44:41
ひろ様

どうもありがとうございます。
情報をいただいたブログをチェックしました。

さっそくjcode.plのz2h_eucとz2h_sjisと修正して、再度チャレンジしましたら、
500のエラーは変わりませんが、サーバのエラーログからはサブルーチンの
エラーが消えて、以下の2行になりました。

malformed header from script. Bad header=/xxx/dead.letter: webform.cgi, referer: http://xxx/webform.cgi
File does not exist: /xxx/home, referer: http://xxx/webform.cgi

malformed headerというエラーを調べましたら、出力のときに、

print "Content-type: text/html\n\n";

これが足りないと出るようなのですが、webform.cgiにはきちんと書かれているので、
今度は何故このエラーが出ているのかがよく分からなくて困っています(笑)。


それはそうと、同じさくらインターネットのサーバなのに、ひろ様のCGIは動いて、
私のCGIが動かないことの方が疑問になっています。

jcode.plが過去のものだとしても、もしさくらインターネット側が、今後サーバの
スペックを更新していくと、ひろ様のフォームメールも動かなくなる事態が起こるかも
しれないですよね?

そういった2次災害(?)を防ぐためにも、さくらインターネット側にも問い合わせを
続けて、できるだけの情報共有をしたいと思っています。

お忙しいと存じますが、お付き合いくださって感謝しています。
ありがとうございます。
質問者 mack  [削除]  投稿日 2013/3/12(火) 13:37:37
ひろ様

さくらインターネットより、回答がありました。そのままコピペはいかがかと思いますので、
箇条書きにします。曰く、

・ユーザの申込み時期により、Perlのバージョンは違う
・今後の不具合の可能性も、全くないとは言えない

同じCGIを使っているのにも拘らず、動作結果が違う点については、

・(送信先メアド等も含めて)設定内容がすべて同じか不明なので、分からない。

とのことです。

ひろ様も、今後くれぐれもご注意くださいませ。

それでは、引き続きがんばります(苦笑)。

返信(回答)する

 


Web裏技