願わくば、誰かが CGI コーディングの経験がまったくないユーザーを助けてくれることを願っています。昨日まで、クライアントが注文を送信したとき、次のコードは正常に機能していました。そして昨日、内部サーバー エラー メッセージがブラウザに表示されました。
私たちのホスティング会社がトラブルシューティングを行ったとき、これは彼らのエラーログが言っていることです:
20130508T200031: www.4printer.com/cgi-bin/mailit.cgi open |/usr/lib/sendmail -t -oi -oem: /home/users/web/b643/ipw.i4printe/public_html/cgi- で許可が拒否されましたbin/mailit.cgi 110行目
残念ながら、コーディングの問題はサポートされていません。
コードの 110 行目には次のように書かれています。
$msg->send();
これは CGI コード全体です。
#!/usr/bin/perl
# webmaster@qnis.net
$date = `/bin/date`; chop($date);
# Read the Input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Split the name-value pairs
@pairs = split(/&/, $buffer);
if(!($buffer =~ /CUSTOMER/)){
print <<"(ERROR_MSG)";
Content-type:text/html
<center><font size='4'><b>No data was recorded. Please use your browsers back button and try again.
(ERROR_MSG) 終了; }
$mailprog = "/usr/sbin/sendmail";
$emailInfo = "";
open(MAIL, "|$mailprog -t") || do{ print "Can't open $mailprog!\n"; exit;};
print MAIL "To: ctsales2\@4printer.com\n";
# print MAIL "To: jim\@spiderbilt.com\n";
print MAIL "From: 4printWebForm\n";
print MAIL "Subject: California Financial Printing Order Form\n\n";
print MAIL "This form was submitted on $date\n\n";
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if ($value eq "SUBMIT INFORMATION") {
Next;
} else {
print MAIL "$name: $value\n\n";
$emailInfo = $emailInfo . "$name: $value<br /><br />";
}
} 閉じる (メール);
$title='Perl Mail demo';
$from= 'info@4printer.COM';
$rcvd_cookies = $ENV{'HTTP_COOKIE'};
@cookies = split /;/, $rcvd_cookies;
foreach $cookie ( @cookies ){
($key, $val) = split(/=/, $cookie); # splits on the first =.
$key =~ s/^\s+//;
$val =~ s/^\s+//;
$key =~ s/\s+$//;
$val =~ s/\s+$//;
if( $key eq "4printerEmail" ){
use URI::Escape;
$user_id = uri_unescape($val);
}
}
## Mail Header
use MIME::Lite;
# SendTo email id
# create a new MIME Lite based email
my $msg = MIME::Lite->new
( 件名 => "4Printer.com 確認"、差出人 => 'sales@4printer.com'、宛先 => $user_id、タイプ => 'text/html'、データ => '
<tr>
<td align="left">
<div width="300">
<font face="Arial" size="2">
<p>
'.$emailInfo.'
</p>
<p>
Your order has been received and is being processed. <br /><br />
Thank you for your order!
</p>
<br />
<font color="#5485a3"><b>California Financial Printing</b></font><br />
P.O. Box 25755<br />
Fresno, CA 93729-5755<br />
559.454.8414<br />
800.438.1449
</font>
</div>
</td>
</tr>
</table>
</td>
</tr>
');
$msg->send();
print <<output;
Content-type:text/html
出力
アドバイスやご意見をいただければ幸いです。よろしくお願いします!