• ベストアンサー

メールフォーム作成で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
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • korolo
  • ベストアンサー率42% (39/92)
回答No.3

> $sendmail = '/usr/sbin/sendmail'; ↑↑↑↑↑ sendmailパスの変数は、$mailprog ではないのですか? $mailprog = '/usr/sbin/sendmail';

nan0007
質問者

お礼

ご連絡ありがとうございます。 $mailprog = '/usr/sbin/sendmail'; この部分が問題でした。 無事動きました。有難う御座いました。

その他の回答 (2)

noname#56882
noname#56882
回答No.2

index.html、kansou.htm、kansou.cgi、jcode.plの全てのパーミッションを「755」にされていますか? おそらく「kansou.cgi」のみパーミッション「755」にするだけでいいと思うのですが。 ※他のは「644」で変更する必要は無いと思いますよ。 ホームページビルダー付属のCGIを見たことがないので全く自信ありませんかせ。 あと、このCGIには脆弱性が発見されており、修正プログラムが配布されています。 こちらを使われたほうが安全だと思います。 CGIスクリプト内部とフォームタグの書き方も換わっています。 [ホームページ・ビルダーのサンプルCGIの脆弱性] http://www-06.ibm.com/jp/software/internet/hpb/security/hpbcgifix_20070514/index.html http://www-06.ibm.com/jp/software/internet/hpb/security/hpbcgifix_20070514/hpbcgifix.html#01 http://www-06.ibm.com/jp/software/internet/hpb/security/hpbcgifix_20070514/hpbcgifix.html#02

noname#49614
noname#49614
回答No.1

自分もperl、CGIは勉強中ですが気づいた点を。 一行目の「!」と「/」の間にスペースがないのはエラーの原因になるのではないでしょうか? また、パーミッションがサーバの指定と異なるということはありませんか? プログラム内のミス以外で気づいたのはこんなところです。

関連するQ&A

  • Perl メールフォーム複数のアドレスに。

    メールを複数のアドレスに配置したいのですがPGをどう変更すれば よろしいでしょうか? 参考ソース #!/usr/bin/perl # フォームメール #jcode.plの場所を設定 require "./jcode.pl"; # sendmailの場所を設定 $sendmail = '/usr/lib/sendmail'; # サンプルのタイトル $mail_title = "メール送信サンプル"; # ページの背景色 $bgcolor = "#FFFFFF"; # ページの文字色 $text = "#000000"; # 戻り先のURL $back_url = '***@aaa.co.jp'; # CGIプログラムの設置場所 $cgi_url = "./mail.cgi"; # 受信メールアドレス(送信先) $mailto = '***@aaa.jp';

    • ベストアンサー
    • Perl
  • メールとウェブサーバーが別マシンで構成されたフォームメールの設定

    http://www.kent-web.com/data/postmail.html ↑ ここに書かれているCGI・Perlにてフォームメールの設定をしようとしているのですが、メールプログラムまでのパスを指定で分からなくなりました。 # メールプログラムの指定 $mailprog = "/usr/lib/sendmail"; マシーン構成は、DNS・sendmailはTurbolinuxで、WebサーバーはApacheでWidows2000の環境になっています。 つまり、Webサーバーにcgi・perlの定義をしていて、別マシーンにsendmailが動いている状況です。 そもそも、Web・メールサーバーが同一マシン上でないとフォームメールができないのかも知れませんが、そのあたりのアドバイスもお願いします。

    • ベストアンサー
    • 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
  • sendmailを利用したメールフォームの作成

    swfファイルから送信できるメールフォームを作成したいと考えています。 それで、とりあえず、perlのsendmailを利用しようと思い立ちました。 自分には、sendmailを使用した経験がないので、とりあえずサーバに お試しスクリプトをアップして動作を確認することにしたのですが、うまく反映されません。 お試しスクリプトは以下のようなものです。 #!/usr/local/bin/perl print "content-type: text/html\n\n"; if(open (SENDMAIL,"|usr/local/sbin/sindmail-t")){   $A="a@b.co.jp";   $B="c@d.ne.jp";   print SENDMAIL <<"EOM";   From:$A   TO:$B   test   EOM   close(SENDMAIL); }else {   print "open_error"; } _end_ このスクリプトのFromとToの部分を除くと、一応呼び出した時にただしく出力されます。 自分の考えでは、こんなスクリプトでも、呼び出しときに宛先のアドレ スにメールが送信されると思っていたのですが、何か考え違いをしてるのでしょうか? とりあえず、日本語文字変換やデータの受け取りなどは、後でjcode.pl やcgi-lib.plを使用してなんとか付け焼刃でやってみようと思ってます。 よろしく、おねがいします。

    • ベストアンサー
    • Perl
  • メールフォームとかで確認画面から書き直すのに戻ると

    メールフォームとかで確認画面から書き直すのに戻ると 書いた文章が全部消えるとか聞きましたが、戻っても消えません。 確か、前にどこかのフォームでFIREFOXで書いて戻ったら消えちゃった事があって・・・ 何が正しいのでしょうか? HTMLにformでCGIに送る仕様です。 いえ、残ってくれた方が良いと思うのですが、 消えるか消えないか試してみただけですが。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> ブラウザの上の戻るボタンでも、ジャバスクリプトのボタンで戻っても消えません。

    • ベストアンサー
    • HTML
  • はじめまして、レンタルサーバーで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
  • メールフォームを2つ設置するには

    違う項目のメールフォームを2つ設置するため 下記のように作りました。 1、CGIフォルダの中にmail.cgiとjcode.plが入っている 2、CGIフォルダの中にmail2.cgiとjcode.plが入っている 1のフォームは送受信できるのですが、 2のフォームで送信すると1のフォームを呼び出してしまいます。 CGI2フォルダを作り送信するのも試しましたが、同じ結果でした。 jcode.plの記述は変えていません。 2のフォームで1のフォームが呼び出される原因について ご教授をお願い致します。

    • ベストアンサー
    • CGI
  • メールフォームから受信で件名が表示されない

    cgi初心者です、 無料のアンケートフォームを使用しているのですが 受信時に件名が表示されません、 どこえおどうしたらよいのでしょうか? ちなみにhtmlの方に <input type=hidden name="subject" value="査定フォームからのメールです">を入れてみましたが受信した内容の上に表示されるのですが メール受信時の件名には表示されません。 以下cgi内容 #!/usr/bin/perl # # (C) COPYRIGHT International Business Machines Corp. 1999 # All Rights Reserved # #------ sendmailパスの指定 ---------------------------------------------- # 以下の、$mailprogに、サーバー上にある"sendmail"コマンドをフルパスで # 記入します。詳しくは、プロバイダのガイドに従ってください。 # (例) $mailprog = '/usr/lib/sendmail'; $mailprog = '/usr/sbin/sendmail'; #------------------------------------------------------------------------ #------ メールアドレスの指定 ------------------------------------------ # 以下の、$mailtoに、感想の送り先となるメールアドレスを記入します。 # (例) $mailto = 'mailaddress@sample.ibm.jp'; $mailto = '*****@********'; #------------------------------------------------------------------------ require 'jcode.pl'; #Get the input read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); #Split the name-value pairs @pairs = split (/&/,$buffer); foreach $pair(@pairs) { ($name, $value) = split(/=/, $pair); #Un-Webify plus signs and %-encoding $value=~tr/+/ /; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name} = $value; if ( $name ne "to" ) { push (@fields, $name) unless (grep(/^$name$/, @fields)); } } # ### 送信フォーマット # $mail_msg = "査定フォームからのメールです"; foreach $field (@fields) { $mail_msg = "$mail_msg-----------------------------------------------\n"; $mail_msg = "$mail_msg($field) $FORM{$field}\n"; } $mail_msg = "$mail_msg-----------------------------------------------\n"; # ### ShiftJis to Jis # &jcode'convert(*mail_msg, 'jis'); open(MAIL,"| $mailprog $mailto")|| die "Can't open $mailprog!\n"; print MAIL $mail_msg; close(MAIL); # ### Make the person feel good for writing to us # print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>Thank you!</TITLE></HEAD>\n"; print "<BODY bgcolor=\"#ffffff\">\n"; print "<align=\"center\">お問合せいただきありがとうございます。\n"; print "</BODY></HTML>\n";

  • メールフォームCGIの設置について

    下記のサイトのメールフォームCGIをさくらインターネットのサーバーで設置したいのですが、うまく作動せず送信できません。 前にロリポップサーバーで設置したところ、作動し送信も問題なくおこなえたのですが、パーミッションやそれぞれのファイルの中身までロリポップで設置したものとまったく同じファイル・条件でさくらインターネットのサーバーに設置したのですが「500 Internal Server Error」がでてしまい、送信できません。 CGIの提供先は下記になります。 http://pgd.jp/cgiscript.html さくらインターネットのパスなどは下記の通りです。 Perl:5.8.x perl:/usr/bin/perl sendmail:/usr/sbin/sendmai CGIの動作環境は下記の通りです。 Perl5 # /usr/sbin/sendmail が使えること # モジュール HTML::Template, Jcode が動作すること 色々試してはみたのですが、CGIやPerlの知識はほとんどありませんので結局何をやってもだめでした。 パーミッションの設定やファイルのアップロードは間違いなくできております。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI

専門家に質問してみよう