- 締切済み
server errorで困ってます。
アメリカでサイトを構築しております。FormMailとNMSを使い、メールフォームを作成したのですが、うまくいきません。internal server error と表示されてしまいます。サーバはApacheです。 以下、コピペします。よろしくご指導下さい。サイトはまだ不完全のため 架空の名前(sample)です。またパーミッションは755で指定しております。 #!/usr/bin/perl -wT # # NMS FormMail Version 3.14c1 # PROGRAM INFORMATION # ------------------- # FormMail.pl Version 3.14c1 BEGIN { $DEBUGGING = 1; $emulate_matts_code= 0; $secure = 1; $allow_empty_ref = 1; $max_recipients = 2; $mailprog = '/usr/sbin/sendmail -oi -t'; $postmaster = ''; @referers = qw(sample.com localhost); @allow_mail_to = qw(license@sample.com @sample.com localhost); @recipients = (); %recipient_alias = ( '1' => 'license@sample.com', '2' => 'translation@sample.com', '3' => 'hello@sample.com', ); @valid_ENV = qw(REMOTE_HOST REMOTE_ADDR REMOTE_USER HTTP_USER_AGENT); $locale = 'ja_JP'; $charset = 'Shift_JIS'; $date_fmt = '%A, %B %d, %Y at %H:%M:%S'; $style = '/css/style_screen_black_slogan.css'; $no_content = 0; $double_spacing = 1; $wrap_text = 0; $wrap_style = 1; $address_style = 1; $send_confirmation_mail = 1; $confirmation_text = <<'END_OF_CONFIRMATION'; From: license@sample.com Subject: 翻訳サポート申し込み http://www.samplereal.com/about.html#schedule END_OF_CONFIRMATION これに追加として、 1 入力フォーム記入漏れがあれば、漏れた部分を赤字で警告を出したい 2 申し込みが完了した時点で「ありがとうございました」等のメッセージを表示したい 3 送信者が送信を完了するとわたし宛にメールと送信者のメアドに「申し込みを受付つけました」等のメッセージを 自動送信したい ご面倒ですがよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- petita
- ベストアンサー率53% (8/15)
随分前にYhoo知恵袋でこれと同じ質問に回答したと思いますが、 @allow_mail_to = qw(license@sample.com @sample.com localhost); のところが間違っています。 ここの2つ目の @sample.com の 「 @ 」 を取り除いてください。 他に間違いがなければ、これで500エラーは出ないと思います。 なお、この変数はその名前から推測すると、メール送信先として許可するアドレスまたはドメインを定義するようですから、 sample.com とすれば、1番目の license@sample.com は設定しても意味がありません。
- YkazubonY
- ベストアンサー率30% (26/86)
server errorは、Apacheのエラーログを見ると、エラーが発生した行番号が記述されています。 それを見ないとデバッグは凡人には不可能ですね。 凡人で失礼しました。
- luka3
- ベストアンサー率72% (434/598)
おそらくこちらのスクリプトを使用しているものと思われます。 http://nms-cgi.sourceforge.net/formmail_compat-3.14c1/ しかしながらこれと比べてみても大幅に変更されていることがわかります。 また、このスクリプトでも肝心のメール送信部分はありません。 ですので、これはもっと大きなシステム化されたもの(NMS Project?)の一部分なのだと思います。 ISPの指示でこのスクリプトを使用しているのであればISPに問い合わせした方がよいでしょう。 もし最初の変更前の状態でエラーが発生しなかったのであれば、いったん初期状態まで戻してそこから少しずつ変更してみてください。
補足
ご回答ありがとうございます。こちらのスクリプトを使用しております。 すべてのファイルは膨大な量になるので、こちらの2000文字規定内には 収まりません。どうし たらいいでしょうか? また「肝心のメール送信部分」とは、どうのような記述になりますか? そちらの部分のみ、コピペできればと思います。
- taporu
- ベストアンサー率44% (46/104)
以下のサイトからPerl Checkerをダウンロードしてテストしてみてください。 http://www.kent-web.com/utility/index.html その結果を書いていただければありあがたいです。 あとログを表示できるのなら(ISPなら無理の確率が高いですが。。。)/var/log/apache2/error.logを見てみるといいと思います。
補足
ご回答ありがとうございます。なるほどチェッカーですね。 さっそく試してみます。 結果をコピペしますので、よろしくご教授下されば幸いです。
- taporu
- ベストアンサー率44% (46/104)
#!/usr/bin/perl -wTを #!/usr/bin/perlに変えても駄目ですか?
補足
ご回答ありがとうございます。 この表記はISPからの指示で、NMS(ニアミススクリプト)の 最初の宣言になるそうです。
- luka3
- ベストアンサー率72% (434/598)
これがすべてであるならば、「BEGIN {」で始まっているが } がないためエラーになっているということになります。 単純に「BEGIN {」を削除すればエラーは解決しますが、、、 文脈からすれば実際にメールを送信している部分がありませんので、この文の後にも続きがあるのではないでしょうか。
補足
すいません、コピペした時に抜けてしまったようです。以下、続きの文です。 またかなり全体的にファイル量が多く全てを提示できません。 「実際にメールを送信している部分」とおっしゃるのは、どのような記述でしょうか? ご面倒おかけしますが、よろしくご指導ください。 # You may need to uncomment the line below and adjust the path. # use lib './lib'; # USER CUSTOMISATION SECTION # -------------------------- # Place any custom code here # USER CUSTOMISATION << END >> # ---------------------------- # (no user serviceable parts beyond here) } # # The code below consists of module source inlined into this # script to make it a standalone CGI. # # Inlining performed by NMS inline - see /v2/buildtools/inline # in CVS at http://sourceforge.net/projects/nms-cgi for details. #
お礼
ありがとうございます。 以下、エラー内容です。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@sample.com 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. -------------------------------------------------------------------------------- Apache/1.3.42 Server at www.sample.com Port 80
補足
Apacheのエラーログを引用できるようでしたら、コピペ させていただきます。