こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CGIエラー、どうしたらいいか・・・。

perlで書いたcgiを実行すると、
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
というエラーが出てしまいます。環境は、windows2003、iis6.0、最新のactiveperlインストール済。perlの内容は、HP閲覧者に情報を入力し、完了後メールを送信するというものです。

require 'cgi-lib.pl';
require 'jcode.pl';

&ReadParse(*in);
$mailStyle=$in{'mailStyle'};
&jcode'convert(*mailStyle,'sjis');
$email=$in{'email'};
&jcode'convert(*email,'euc');
$checkFlg=$in{'ChFlg'};
&jcode'convert(*checkFlg,'euc');

if($checkFlg eq ""){
&RootError();
}
use Net::SMTP;
$smtp = Net::SMTP->new('192.0.0.10');
if(open(ML,"C:/WINDOWS/system32/cdosys.dll")){
$to='**@***.co.jp';
$smtp->mail($email);
$smtp->to($to);
$smtp->data();
$smtp->datasend("$mailStyle\n");
$smtp->dataend();
$smtp->quit;
以前、linuxで動いてたのでそれを移行するという感じです。どうかよろしくお願い致します。

投稿日時 - 2006-06-13 17:18:34

QNo.2213265

すぐに回答ほしいです

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

IISでアプリケーションのマッピングは済んでいますか?

require 'cgi-lib.pl';
require 'jcode.pl';
ですが、パスは合っていますか?
パスの記述は、LinuxとWindowsでは異なったような気がします。

投稿日時 - 2006-06-13 17:27:30

補足

'cgi-lib.pl'と'jcode.pl'はc\wwwroot\cgi-binの中に、実行対象のcgiファイルと一緒に入っています。
また、エラー内容は、他には何も出ていません。
HPで調べて、パスをc\wwwroot\cgi-bin\cgi-lib.plとc\wwwroot\cgi-bin\jcode.plと変更し実行しましたが結局同じエラーでした。引き続きどうかお願い致します。

投稿日時 - 2006-06-13 17:29:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

最低限
print "Content-type: text/html\r\n\r\n";
が無いと、CGIが動いても、CGIの結果をブラウザに送出サーバーが困ると思いますが。

これはCGIのソースの抜粋した一部ですよね?

出てるエラーが
print "Content-type: text/html\r\n\r\n";
が無い時っぽいので…。

投稿日時 - 2006-06-13 17:36:51

補足

すいません。入力文字数の関係等でperlの続きを書きませんでした。続きで、
print <<EOF;
Content-type: text/html;
この後に、表示するHTMLが記入されています。windowsXPではうまくいったんですが・・・。

投稿日時 - 2006-06-13 17:45:51

ANo.1

その行の他にエラーの文は出てないですか?

とりあえず、思いつくのは、
同じディレクトリに、
cgi-lib.pl、およびjcode.plはありますか?

投稿日時 - 2006-06-13 17:27:23

あなたにオススメの質問