KENT-WEB サポートコーナー 過去ログ [ 0435 ]


記事No: 8654
投稿日: 2011/06/28(Tue) 08:33:46
タイトルCGI エラー
ID情報: uyoyo
投稿者: uyoyo
URLhttp://○○(コンピューター名)\cgi-bin\combbs.cgi

イントラネット内のWEBサーバーでこちらのcombbs.cgiを動作させたいと考えています。

ネット等を参照しながら、windows2003サーバにIISをインストール後、ActivePerlをインストールしました。

*その際、plファイルのマッピングができていなかったので、手動でしました。またIISの拡張機能にもperl関係の項目がなかったので手動で設定しています。

combbsをダウンロードし、C:\Inetpub\cgi-bin(cgi-binは仮想ディレクトリにしています)にそのまま展開し、IEからhttp://○○(コンピューター名)/cgi-bin/combbs.cgiと指定して実行してみました。

すると次のようなエラーメッセージが出てきます

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers

こちらのcgi自体はいじっていません。
cgi-binのセキュリティは、
everyoneフルアクセスにしてあります。

同じフォルダに置いてあるテキストを表示させる簡単なcgi

# hello.cgi
print "Content-type: text/html\n\n";
print '<HTML><HEAD><TITLE>Hello World</TITLE></HEAD>';
print '<BODY>';
print '<H1>Hello World</H1>';
print '</BODY></HTML>';
exit;

は動いていますし、同様にindex.htmlファイルも表示されます。

エラーを解消するには、どのような方法が考えられるでしょうか?

よろしくお願いします。


記事No: 8663
投稿日: 2011/06/28(Tue) 20:32:24
タイトルRe: CGI エラー
ID情報: kent
投稿者: KENT

> イントラネット内のWEBサーバーでこちらのcombbs.cgiを動作させたいと考えています。
>
> ネット等を参照しながら、windows2003サーバにIISをインストール後、ActivePerlをインストールしました。
>
> *その際、plファイルのマッピングができていなかったので、手動でしました。またIISの拡張機能にもperl関係の項目がなかったので手動で設定しています。
>
> combbsをダウンロードし、C:\Inetpub\cgi-bin(cgi-binは仮想ディレクトリにしています)にそのまま展開し、IEからhttp://○○(コンピューター名)/cgi-bin/combbs.cgiと指定して実行してみました。
>
> すると次のようなエラーメッセージが出てきます
>
> CGI Error
> The specified CGI application misbehaved by not returning a complete set of HTTP headers

この辺が参考になりませんか?

http://www.google.com/search?hl=ja&q=The+specified+CGI+application+misbehaved+by+not+returning+a+complete+set+of+HTTP+headers&btng=google


記事No: 8666
投稿日: 2011/06/29(Wed) 08:28:55
タイトルRe^2: CGI エラー
ID情報: uyoyo
投稿者: uyoyo
URLhttp://○○(コンピューター名)\cgi-bin\combbs.cgi

お示しいただいたリンクを元に、

require 'C:\Inetpub\cgi-bin\jcode.pl';

のように絶対パスにしてみましたが、相変わらず、エラーが出ています。

*cgi-binの中にcombss関連のファイルを展開しています。

このことでかれこれ1ヶ月近く悩んでおり袋小路に入っています。ほかの掲示板でも尋ねてみましたが、解決できませんでした。

何卒、よろしくお願いします。


記事No: 8670
投稿日: 2011/06/29(Wed) 17:43:36
タイトルRe^3: CGI エラー
ID情報: kent
投稿者: KENT

> お示しいただいたリンクを元に、
>
> require 'C:\Inetpub\cgi-bin\jcode.pl';
>
> のように絶対パスにしてみましたが、相変わらず、エラーが出ています。
>
> *cgi-binの中にcombss関連のファイルを展開しています。
>
> このことでかれこれ1ヶ月近く悩んでおり袋小路に入っています。ほかの掲示板でも尋ねてみましたが、解決できませんでした。

これはIISの設定上の問題ではないのでしょうか?
IIS特有の問題であれば、それをアプリケーション側に求められても、難しいところがありますね。

ちなみに、以下のQAもだめですか?

http://support.microsoft.com/kb/145661/ja

また、Perl Checkerを試すとどうなりますか?

http://www.kent-web.com/utility/index.html


記事No: 8676
投稿日: 2011/06/29(Wed) 19:36:15
タイトルRe^4: CGI エラー
ID情報: uyoyo
投稿者: uyoyo
URLhttp://○○(コンピューター名)\cgi-bin\combbs.cgi

> > お示しいただいたリンクを元に、
> >
> > require 'C:\Inetpub\cgi-bin\jcode.pl';
> >
> > のように絶対パスにしてみましたが、相変わらず、エラーが出ています。
> >
> > *cgi-binの中にcombss関連のファイルを展開しています。
> >
> > このことでかれこれ1ヶ月近く悩んでおり袋小路に入っています。ほかの掲示板でも尋ねてみましたが、解決できませんでした。
>
> これはIISの設定上の問題ではないのでしょうか?
> IIS特有の問題であれば、それをアプリケーション側に求められても、難しいところがありますね。
>
> ちなみに、以下のQAもだめですか?
>
> http://support.microsoft.com/kb/145661/ja
>
> また、Perl Checkerを試すとどうなりますか?
>
> http://www.kent-web.com/utility/index.html
>
>

KENT 様

ご回答ありがとうございます。
お示しいただいたリンクを元に

print "HTTP/1.0 200 OK\n";
print "Content-Type: text/html\n\n\n";



#-------------------------------------------------
# HTMLのヘッダー
#-------------------------------------------------
sub header {
if ($headflag) { return; }

print "Content-type: text/html\n\n";
print <<EOM;

の部分に置き換えてみましたが、解決しませんでした。

PERLチェッカーの内容は、

改行形式 LF (UNIX形式)
Perlのパス #!/usr/local/bin/perl
サーバのPerl
とのチェック パスが不正のようです。
/usr/local/bin/perl
パーミッション 実行権がありません。
文法チェック combbs.cgi syntax OK

でした。
これを見ると、PERLの実行ファイルの指定がおかしいようです。

解決策がありましたら、ご教授ください。
よろしくお願いします。


記事No: 8683
投稿日: 2011/06/30(Thu) 20:35:45
タイトルRe^5: CGI エラー
ID情報: kent
投稿者: KENT

> これを見ると、PERLの実行ファイルの指定がおかしいようです。

ここでいうパーミッションは、UNIX系のパーミッションですので、IISだと無視していいと思います。
実物も見れない状況ですし、これは分からないですね。
試しに、Perlパスの直下に以下の文字列を入れてみると、もう少し具体的なエラーメッセージが出るかもしれません。

BEGIN {
use CGI::Carp qw(carpout fatalsToBrowser);
carpout(STDOUT);
}


記事No: 8693
投稿日: 2011/07/01(Fri) 17:11:29
タイトルRe^6: CGI エラー
ID情報: uyoyo
投稿者: uyoyo

> > これを見ると、PERLの実行ファイルの指定がおかしいようです。
>
> ここでいうパーミッションは、UNIX系のパーミッションですので、IISだと無視していいと思います。
> 実物も見れない状況ですし、これは分からないですね。
> 試しに、Perlパスの直下に以下の文字列を入れてみると、もう少し具体的なエラーメッセージが出るかもしれません。
>
> BEGIN {
> use CGI::Carp qw(carpout fatalsToBrowser);
> carpout(STDOUT);
> }

KENT 様

教えていただいたテキストを入力しましたが、改善されませんでした。
発想を転換し、IISを諦め、以前使ったことのある
Black Jumbo Dog
というソフトで試してみました。

このソフトでWebサーバーを立ち上げ、cgiを動かしたところ、
簡単に動作してくれました。

学校内での、イントラネット内で使用するだけの掲示板ですので、これで十二分に利用できます。
セキュリティが少し不安ですが、これからドキュメント等を見て研究したいと思います。

お忙しいところ、いろいろご教授いただきありがとうございました。


[検索ページ]