• ベストアンサー

http500サーバーエラー

cgiを作成してテストをしていたのですが、http500サーバーエラーとなってしまいました。 内容は、1つのcgiで処理区分を設けて複数のHTMLを作成したり、メール送信をさせています。 初めに処理区分なしで実行させ、入力フォームのHTMLを出力させます。 次に、前に入力した項目を出力して確認してもらいます。 次に、sendmailでメール送信して送信完了画面を出力したいのですが、ココでhttp500のエラーメッセージが出ます。 当然ココまで同じcgiを使用しているのですが、何故この時だけエラーになってしまうのか分かりません。localでテストしている時には動いているのですが? 誰か、知恵を貸してください。 よろしくお願いします。

  • CGI
  • 回答数5
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • burn
  • ベストアンサー率65% (25/38)
回答No.2

確認ですが、$myaddressがnullであることと、sendmailの -t スイッチが外されているのは、意図的なものですか? 詳細なロジックまでは目を通していませんが、この辺が怪しいのでは・・・?

pink-panther
質問者

補足

補足回答ありがとございます。 > $myaddressがnullであること これは、他のcgiからコピーしてきたのですが、修正不足でした。 おかげさまで動くようになりました。 > sendmailの -t スイッチが外されているのは 2、3種類のcgiで違うopenの仕方をしていたので試してみただけです。 -tに何の意味があるのでしょうか? あと、新しく質問すべきかも知れませんが、動いて送られたメールの本文が 出ないんです。 ヘッダーの最後に X-UIDL: ]l$#!]$(#!e?'!!%('!! などと出ているのですが、関係してますか? よろしければ回答お願いいたします。

その他の回答 (4)

  • zonbie
  • ベストアンサー率27% (3/11)
回答No.5

それで'\n'を入れてみました?? '\n'入れてもメール本文が出ませんか? ソースを見た限りでは、ヘッダーに本文を書いているように見うけられたのですが、どうですか??

pink-panther
質問者

お礼

有難うございます。 '\n'回答があった後、入れてやっていました。 原因分かりました。 $m_com = $com1; が $m_com = $com; でした。 単純なミスでご迷惑かけました。

  • ka-2
  • ベストアンサー率37% (22/58)
回答No.4

補足です。「print "To: $mail";」(←例)の $mailの中にメールアドレスが入ると思うのですが、 aaa@hoge.co.jpではエラーになってしまうので、aaa\@hoge.co.jpとなるようにすればエラーが回避できるはずです。

pink-panther
質問者

お礼

有難うございます。

  • zonbie
  • ベストアンサー率27% (3/11)
回答No.3

burnさんがおっしゃられているように、$myaddressがnullみたいですけど・・・ それと、Subject: とメール本文の間にもう一つ'\n'が必要なのでは?? つまりヘッダー終了してないとか?? 間違ってたらごめんなさい。

pink-panther
質問者

お礼

有難うございます。 おかげさまで、動くようになりました。

  • burn
  • ベストアンサー率65% (25/38)
回答No.1

テスト環境が分からないので、正確には回答できませんが、sendmail以外の処理は上手く行っていて、そのときだけの場合は以下の事が考えられますので、確認してみて下さい。 1.sendmailのパスの記述が間違っている場合。  もし、レンタルサーバーなどに契約されている場合は  sendmailのパスも変わります。確認してみて下さい。 2.sendmailに渡す、パラメーターの記述が間違っている。  これは、「何処が・・・」というアドバイスは出来ません。例えば print MAIL "From: ####";の記述の####の部分が"aaaa@bbbb.com"等と「""」を使うとエラーになりますよ。 もう少し、状況がわかれば、原因が分かると思うのですが・・・・

pink-panther
質問者

補足

早速の回答ありがとうございます。 1.は確認済みです。 2.もあっているつもりなのですが・・・? まだ、半完成で見せるのが恥ずかしいのですが http://www.az-studio.com/value-int/syokai.txt にcgiを置いておきます。 よろしければ見ていただきたいのですが。

関連するQ&A

  • perlからsendmailを使う

    現在、mod_perlを使ってサイトを構築しているのですが、その中で、sendmailを使ってメールを送信している処理が遅く困っています。 その処理が遅いため、画面へのHTML出力が遅くなっています。(HTML出力処理は、メール送信処理よりさきにやっているのですが・・) 下記は、ソースの該当部分です。 直接、sendmailに渡しているのですが、 この処理がいけないのでしょうか? 何か改善方法があるようであれば教えてください。 ちなみに、通常のCGIだとforkで、別プロセスを立てて そのプロセスにメール送信をさせて、主プロセスは、HTML出力をさせることはできると思うのですが。 プロセスが常駐しているmod_perlでは、有効な手なのでしょうか。 -------------------------------------- open(SENDMAIL,"|/usr/lib/sendmail -t") or $err = 1; if ($err == 0) { print SENDMAIL $mail_body; close(SENDMAIL); $err_msg = "メール送信正常に処理しました。\n"; } else { $err_msg = "メール送信エラー:ticket_cd:$$ref{ticket_cd}\n"; } --------------------------------------

    • ベストアンサー
    • Perl
  • フォームメールの内容確認を行うCGIについて

    CGIにチャレンジを始めた超ビギナーです。 CGIに関するテキスト等を読んで,フォームメールを送信するCGIを設置してみました。 それはサンプルどおりに作成したので,Perlとかsendmailのパスを修正するだけで使用できたのですが,できれば,フォームに記載した内容を確認した後にsendmailに渡し,メールできるようにしたいのです。 そこで,最初に記入したフォームから各データを復元した後に,その記載内容をHTMLで一度出力し,それから次のCGIスクリプトに受け渡すような手順を考えたのですが,その際のデータの受け渡しがうまくできませんでした。 ヘッダやボディの内容をそれぞれファイルに書き込んで,それを別のCGIで読み出してやれば,うまくいくのではないかと思ったのですが...。 つきましては,何か参考になるサンプルCGI,HTML,サイト等があれば教えていただけないでしょうか? 本当に基本的なことで申し訳ありません。 何卒よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • サーバエラー500発生時でも200で返却したい

    mb_send_mailで不正な送信先メールアドレスを設定して実行すると、戻り値はfalseとなり、 falseの場合には後続のPHPスクリプトにてメール送信が失敗したエラー画面を出力する 処理を実装している。 mb_send_mailの戻り値がtrueまたはfalseかを判定している以外は、エラー処理は実装していません。 【問題点】 mb_send_mail=false後、エラー画面出力処理が最後まで実行されていることは、 処理の途中に埋め込んだデバッグ用のログで確認済みなのだが、 クライアント側にはInternal Server Errorのステータスと、PHPスクリプトで 出力しようとした画面ではなく、内部エラーが発生した旨の簡易な情報が出力された 画面が出力されます。 [Mon Sep 09 11:43:57 2013] [error] [client ****] malformed header from script. Bad header=test@set@ting_error... ↑不正なメールアドレスを設定したのでエラーになることは構わないのだが、 後続の処理で作成したエラー画面をHttpStatus200で返却したい。 【質問】 mb_send_mail=falseが発生したとしても、HTTPステータスは500ではなく200で レスポンスを返却し、PHPスクリプトで作成したエラー画面をクライアントに表示させる方法を ご教授ください。 【試したこと】 ・mb_send_mail=falseとなった場合に、http_response_code(200);としてみたが効果なし。 ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 登録後のメール

    WindowsXPで自宅サーバーを作成しました。ページをHTMLで簡単に作り、会員ページを作ろうと思っているのですがどうしてもあるところで詰まってしまいます・・・。 KENTWEBさんのフリーcgiを使って登録フォームを作り、自宅メールサーバー(ArGoSoft Mail Serverを使用)を介してIDとPWを登録されたメールアドレスに自動で送信するというものなのですが・・・。 一応sendmail.cgiとpostmail.cgiは見よう見まねですが作りました。 ですが試しに登録してみるとメールサーバーへログも残らずsendmail.cgiで行きとどまってることが分かりました。 sendmail.cgiについてもっと詳しく書いてあるサイト、または登録されたメールアドレスに自動で作成されたIDとPWを送信するcgiなどはないのでしょうか? そしてもしsendmail.cgiやpostmail.cgiしか使う手がない場合メモ帳等で開いてどこをどう書き換えればよいのでしょうか・・・?ご協力お願いします。 (初めて作成し始めたもので、至らない点もありますがどうぞお願いします。)

    • 締切済み
    • CGI
  • mailformのCGI設置で「Internal Server Error」が出て・・・

    いつもお世話になります。 メールフォームのCGIを設置しようと あれこれやっているのですが 「Internal Server Error」と表示されうまくいきせん。 たぶんCGIファイルの記述がマズいのだと思うのですが・・・ パーミッションなどはマニュアルどおりに設定してます。 CGIの一部を掲載してみますので よろしくお願い致します。 #!/usr/bin/perl #jcode.pl のパス(相対パス指定) $jcode = './jcode.pl'; #sendmail のパス(要変更) $sendmail = '/usr/sbin/perl/sendmail'; #一時保存用ファイルのパス(相対パス指定) $tempfile = './tempfile.dat'; #メールを受け取るアドレス $getmail = '********@rose.plala.or.jp'; #送信完了画面のパス(http://~の絶対パス指定) $complete = 'http://challenger.****.ne.jp/*********/public_html/mailform/complete.html'; #送信確認用テンプレートのパス(相対パス指定) $checktemplete = './check.html'; #エラー表示用テンプレートのパス(相対パス指定) $errortemplete = './error.html'; #コピーメールの送信者名 $copymailfrom = 'from@form.mail'; #入力フォームのアドレス(http://~の絶対パス) $enterformurl = 'http://challenger.****.ne.jp/*********/public_html/mailform/form.html'; #このCGIのアドレス(http://~の絶対パス) $ownurl = 'http://challenger.****.ne.jp/*********/public_html/mailform/mail.cgi'; ディレクトリやメールアドレスの部分の「*」は ブラインドのために変更して載せてます

    • ベストアンサー
    • CGI
  • CGI/perlのエラー

    CGIのテストをしています。 サーバーはUbuntu14.04 htmlで <html> <head><title>HTMLサンプル</title></head> <body> ボタンサンプル<br> <form action="cgi-bin/test.cgi" method="post"> <button type="button">ボタン</button><br> <input type="submit" value="送信"> </form> </body> </html> test.cgi #!/usr/bin/perl system = ("date >> webwrite""); 実行すると End of script output befor heads: test.cgi のエラーで止まってしまいます。 ファイル webwriteは作成されています。 何か、終了処理が必要なもでしょうか?

  • メールアドレスの@から後ろが・・・・

    perlでcgiを作成していてどうしてもわからないことがでてきて書き込みしました。 現在sendmailでメール送信システムを作成している中で、メールアドレスの@からの後ろの一部が変換されてメールが送信してしまう現象がでてきてました。今のところ、自分の使っている会社のアドレスが下のように一部のpoのところがdns2に変換されて送信されてきてしまいます。 [例] test@po.×××××.××.××     ↓ test@dns2.××××.××.×× TO:とFrom:の所だけがこのようになってしまうのですが、これはサーバの設定の関係なのでしょうか?それともcgiで何か処理をかけてあげなくてはいけないのでしょうか??? 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • sendmailのテスト

    こんにちわ。 フォームに入力してもらった情報をsendmailで自分のメールアドレスまで送ってもらうcgiを作成しているのですが、どのようなメールになるかローカルでテストしてみたいです。 どのようにすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • はじめまして、レンタルサーバーでCGI(sendmail)に苦戦中です

    はじめまして、レンタルサーバーでCGI(sendmail)に苦戦中です 皆さんの知恵を教えてください 現在の状況  サーバー : 大塚商会 アルファメール         新Webに変更済み(CGI可能) 作り方として、直接CGIから実行せず、htmlからメールフォームを表示して そして、sendmail.cgiを実行する形式にしました 参考として ttp://www.site-cooler.com/kwl/cgi/5.htm を手本とさせていただきました 上記のファイルをダウンロードして、必要な箇所を変更しました   ・sendmail     パス:/usr/sbin/sendmail   ですが、なぜか…sendmail.htmは表示できて、送信ボタンを押すとエラーになります   「 internal Server Error 」 です 色々模索中なのですが、全然、解決の目処が立っておりません 模索中なのは  ●パーミッション : アルファメールでは「700」が推進とあったので700にしてみたら   sendmail.htmすら、動かず、755に変更しました   とりあえず、メールフォーム(htm)は表示されます  ●sendmail.cgiは、755・700とも動きません  ●CGIの動作環境は、     ttp://www.alpha-mail.jp/support/server_info/pg/cgi.html   です 下記のように変更しました ------------------------------------------------------------------ #!/usr/bin/perl # 初期設定 -----------------------------------------------# # # sendmailへのパス (変更済み) # $sendmail = '/usr/sbin/sendmail'; # # jcode.plへのパス # $jcode = './jcode.pl'; # # メールの送付先 # $to = 'QQQQQQQ@QQQQQQ.co.jp'; # # メールの題名 # $subject = 'CGIメール送信サンプル'; # # 確認ページより戻るでリンクされるURLを指定 # $back = 'XXX://XXX.XXXXX.XXXX/'; # # 呼出し元。チェックする時はhttpから始まるURLを指定 # $referrer = ''; --------------------------------------------------------- どうかアドバイスをお願いします

    • ベストアンサー
    • CGI
  • メールフォーム作成でInternal server errorと出ます。

    皆様こんばんは。メールフォーム作成で困っております。 練習中なのでありますがホームページビルダー11に付いていました メールフォームCGIを利用しレンタルサーバーへUPしてみましたが Internal server error500と出てしまいます。 レンタルサーバーはPerlとsendmailはOKです。 ファイル構成です。 index.html kansou.htm kansou.cgi  jcode.pl です。同じディレクトリです。FFFTでパーミッションは755にしてあります。アスキーモード利用 kansou.cgiの最初のあたり ------------------------------------ #!/usr/bin/perl # # (C) COPYRIGHT International Business Machines Corp. 1999 # All Rights Reserved # #------ sendmailパスの指定 ------------------------------------- # 以下の、$mailprogに、サーバー上にある"sendmail"コマンドをフルパスで # 記入します。詳しくは、プロバイダのガイドに従ってください。 # (例) $mailprog = '/usr/lib/sendmail'; $sendmail = '/usr/sbin/sendmail'; $mailto = 'aaa@aaaa.co.jp'; #--------------------------------------------------------------- require 'jcode.pl'; ここまで。 ------------------------------------- kansou.htmの最初あたりのHTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>感想ページ</TITLE> </HEAD> <BODY bgcolor="#ffffff"> <H2 align="center"><I>お問い合わせフォーム<BR> <BR> 下記に必要事項をご記入の上、送信ボタンを押して下さい。</I></H2> <HR> <FORM action="kansou.cgi" method="POST"><INPUT type="hidden" name="to" value="aaa@aaaa.co.jp"> <CENTER> このあたりまで記載します。 どこが悪いのか何度試してもよく分りません。 どなたかアドバイスして頂けないでしょうか。

    • ベストアンサー
    • CGI