• ベストアンサー

CGIエラー

ホームページにCGIを設定したら下記エラーが発生したのですが、どこの行がエラーになったかが表示されません… もしわかりましたら教えて下さい。 CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers.

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

  • ベストアンサー
回答No.6

■結論 今回のサーバー(お名前.com の プレミアサーバー)では設置できません。 サーバーソフトは Microsoft-IIS/6.0 と、同じ様な内容の質問を見つけました。 参考になればいいのですが。。

参考URL:
http://www1.anx.co.jp/~kuwahara/cgi-bin/cgi/support/qa.cgi?mode=data&uid=01041
mytora1
質問者

お礼

ありがとうございます。 まさしく同じ状況に陥っている状態です…私もWindows ServerではなくUnix ServerでのレンタルServerを借ります。

その他の回答 (5)

  • runa_moon
  • ベストアンサー率34% (198/581)
回答No.5

えーっと、スクリプトの配布先というのはたとえば 大きいところで言えばKENTWEBさんとかそういうところで、 どこから借りられていますか?ということなんですが。 色々考えたのですがそちらのプレミアムサーバのHPのヘルプでCGIの設定をもう一度見られてはいかがでしょうか? そちらでは、相対パスがつかえず絶対パスしか使えないためにエラーが起こっているような気もします。 ・1行目のPerlのパスはあっていますか? ・設定ファイルの全てのパスはあっていますか?(jcode.plや./lib/pc.plなど) 一度ご確認くださいね。

mytora1
質問者

お礼

丁寧な対応誠にありがとうございます。 原因が判明致しました。私のレンタルServerの知識不足による設定不可能なServerに登録した事が判明しました…本当にお手数をおかけいたしました。

mytora1
質問者

補足

度々のご連絡ありがとうございます HELPを確認したところ下記記述が存在しておりました。 *行数一行目の#!/usr/bin/perlに関してはWindows2003の為、必要なし その為、#!/usr/bin/perlの削除を行いました。 *次に相対パスがつかえず絶対パスしか指定が出来ないためrequire 'config.pl';の部分をrequire './XXXX/XXXXX/config.pl';に変更を行いましたが現象はかわらない状態となっております…

  • runa_moon
  • ベストアンサー率34% (198/581)
回答No.4

再び登場です。 お名前COMのプレミアムサーバーとはどんなものか存じ上げないのですが そちらにCGIの設定についてかかれていないでしょうか? プロバイダーによってパーミッションの変更をしなくては成りません。 ちなみにスクリプト配布先はどこなのでしょうか? スクリプトによっても変わってきますが・・・。

mytora1
質問者

補足

お名前COMのプレミアムサーバーに関してなんですが、ベースがWindows Serverとなっております。 その為、パーミッションの設定に関しては不要のはずなんですが…ちなみにスクリプトの配布先なんですがcgi-binの中に設定してあります。

  • runa_moon
  • ベストアンサー率34% (198/581)
回答No.3

どこかのCGIを借りてきてされていますか? NIFTYとか特殊なプロバイダーの場合は変えないといけないところもありますし ソースがないとどこが間違っているかわからないです^^;

mytora1
質問者

補足

ご連絡ありがとうございます。 使用しているのはレンタルサーバーでお名前COMのプレミアムサーバーを使用しています。

  • Riruka
  • ベストアンサー率37% (51/137)
回答No.2

CGIの文法やパーミッションの設定をチェックしてくれるCGIを使ってみたらどうですか?

参考URL:
http://www.kent-web.com/utility/index.html
mytora1
質問者

補足

ご連絡ありがとうございます インストールして使用してみましたところ下記エラーが発生しました。 改行形式 LF (UNIX形式) Perlのパス #!/usr/bin/perl サーバのPerl とのチェック パスが不正のようです /usr/bin/perl パーミッション 実行権がありません 文法チェック これはどういう事なのかが上手く理解していないのですが…よかったら教えていただけないでしょうか?

回答No.1

ソースがあったほうが回答し易いかも知れませんね。

mytora1
質問者

補足

#!/usr/bin/perl require 'config.pl'; #■HTMLのタグ(<html>~</html>まで) $HTML_TAG = " <html><head><title>$TITLE</title></head> <body> <form method=post action=$TM_CGI> <input type=hidden name=M value=S> <input type=hidden name=U value=N> □掲示板<HR> □登録ユーザー<BR> □ユーザー名<BR> <input name=NAME size=8><BR> □パスワード<BR> <input name=PASS size=8 istyle=4><BR> <input type=submit value=入室> </form><HR> □<a href=$IMG_CGI>画像設定</a><BR> □<a href=$R_CGI?M=PC1>パスワード確認</a><BR> □<a href=$R_CGI?M=SD1>仮登録キャンセル</a><BR> □<a href=$R_CGI?M=PT1>ポイント追加申\請</a><BR> □<a href=http://www.hotspeed.jp>ホームへ</a><BR> </body> </html> \n"; ############################### #ここから下は変更しないでください ############################### #▼時刻取得(時間毎でユニークなID作成) ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $wday = ('日','月','火','水','木','金','土')[$wday]; $DATE1 = sprintf("%02d/%02d(%s)%02d:%02d",$mon +1,$mday,$wday,$hour,$min); $DATE2 = sprintf("%02d%02d%02d%02d%02d%02d",$year-100,$mon+1,$mday,$hour,$min,$sec); $DATE3 = sprintf("%02d%02d%02d",$year-100,$mon+1,$mday); $LOGFILE="$LOG$DATE3.txt"; $HOST = $ENV{'REMOTE_HOST'}; $ADDR = $ENV{'REMOTE_ADDR'}; $UA = $ENV{'HTTP_USER_AGENT'}; if ($HOST eq '') { $HOST = $ADDR; } if ($HOST eq $ADDR) { $HOST = gethostbyaddr(pack('C4',split(/\./,$HOST)),2) || $ADDR; } ($d,$d,$AGEN,$d) = split(/\//,$UA); if ($AGEN eq "") { $AGEN="Other";} &lock; if (!open(OUT,">>$LOGFILE")) { &error('error'); } print OUT "$DATE1,$HOST,$ADDR,$UA,$AGEN\n"; close(OUT); if (!open(IN,"$CNT")) { &error('error'); } $CT = <IN>; close(IN); $CT++; if (!open(OUT,">$CNT")) { &error('error'); } print OUT $CT; close(OUT); unlink($LOC); print "Content-type: text/html\n\n"; print $HTML_TAG; exit; #▼ロックファイル sub lock { $symlink_check = (eval { symlink("",""); }, $@ eq ""); if (!$symlink_check) { $c = 0; while(-f "$LOC") { $c++; if ($c >= 3) { &error("error"); } sleep(2); } open(LOCK,">$LOC"); close(LOCK); } else { local($retry) = 3; while (!symlink(".", $LOC)) { if (--$retry <= 0) { &error("error"); } sleep(2); } } } sub error { if (-e "$LOC") { unlink($LOC); } print "Content-type: text/html\n\n"; print "<html><head><title>$TITLE</title></head>\n"; print "<body>\n"; print "■エラー<hr>\n"; print "$_[0]\n"; print "</body></html>\n"; exit; }

関連するQ&A