CGI作成での質問です

[上に] [前に] [次に]
まさ 2000/01/28(金) 07:01:10
どう質問すればいいのかよくわからないんですけど、
今CGIを作ってるサーバーが新しくなって、
また新しくCGIを作ったんですけど、動きません。
ローカルの環境(WIN98)でテストしてあるので、
動作はするはずなんですけど・・・
それで、テスト用に簡単なCGIを作ったんですけど、
それも動きません。
動かないっていうより、表示されません。
C言語、PERL両方試しました。
そのコードは、
C言語、
#include<stdio.h>
#include<string.h>
#include<stddef.h>

int main(){
printf( "Content-type: text/html\n\n" );
printf( "<HTML><HEAD></HEAD>" );
printf( "<BODY><P>テスト\n</BODY></HTML>" );
return( 0 );
}
PERL、
#!/usr/bin/perl

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

print "</head>";
print "<body>";
print "Hello!!";
print "</body>";
print "</html>";

です。
エラーは”HTTP 500 - 内部サーバー エラー ”と出ます。
パーミッションの設定もしてありますし、
.htaccessにも、
”AddType application/x-httpd-cgi .cgi”の一行を追加しました

さっぱり原因がわからないので、どうかよろしくお願いします。

ラウォッチ 2000/01/28(金) 09:19:38
CGI実行の仮想パスを確認してください!

view-source:http://www.〜〜/cgi-bin/xxx.cgi

まさ 2000/01/28(金) 15:49:20
仮想パスを確認して下さいとはどういう事でしょうか?
呼び出し元が間違ってるっていう事なのでしょうか?
でも、直接HTTP://WWW.〜/CGI−BIN/〜CGIと直接指定しても表示されません。
サーバーの管理者には、エラー内容からすれば、コードの記述に誤りがあるんじゃないですか?
と言われました。
それで同じサーバー内で実際に動いてるPERLをコピーしてきて、
そのまま使ってみたのですがそれも動きません。
コピー元のCGIは表示されました。

さっぱり原因がわかりません・・・
今までこんなことなかったのに・・・
どんな事でもいいので、気付いたことがあれば、
アドバイスお願いします。

ラウォッチ 2000/01/28(金) 16:09:50
上記のテストプログラムは見る限りまちがはありません。
考えられるのは、CGIまでのパス(仮想パス)です。

ブラウザのネスケでは場所、IEではアドレスのところに直接以下を入力して下さい。

view-source:http://テスト中のCGIのアドレス

これで、ソースが表示されば、仮想パスは正しいです。
ソースが表示されなければ CGIのパスを確認してください。

例、
view-source:http://www.parkcity.ne.jp/~chaichan/bin/chaichan.cgi

ラウォッチ 2000/01/28(金) 16:12:26
view-source:http〜は view〜 から入力してね!

ふじ 2000/01/28(金) 17:04:26
・FTPで送るときにバイナリで送っている
・.htaccess の記述に間違いがある
・#!/usr/bin/perl のパスが違う(Perl)
・ローカルでコンパイルしたバイナリをそのまま送ってる(C)
とかかなあ。

Cで書いたCGIが使えるってことは、telnetで入ってコンパイルできるんでしょうか?
そうなら、telnetで入ってシェルから実行できるかどうか
試してみては。

管理者に頼んでエラーログを見せてもらえるならば、それを見ましょう。
原因が書いてあるはずです。

>view-source:http://テスト中のCGIのアドレス
これは、CGIが実行されて吐き出したHTMLのソースをブラウザが
表示するだけでは。そもそも実行できていないCGIに対して
やっても無意味でしょう。

ラウォッチ 2000/01/28(金) 17:18:56
ふじさんへ
>やっても無意味でしょう。
上の単純明白な C と Perl でダメっていうことは、仮想パスを疑っています。(私は)
ですので、view-sourceで仮想パスが正しいか、知りたかったのです。

ふじ 2000/01/28(金) 17:46:17
サーバーエラーが出てるってことは、URLはあってる
(けどCGIがちゃんと動いてないからエラーが出てる)
ってことでは。
NotFound とかではないんですから。

# だから、
# view-source:http://〜〜 ってやっても、
# Webサーバが出した「HTTP 500 - 内部サーバー エラー 」
# (のHTMLのソース)が見えるだけだと思うんですけど。

ラウォッチ 2000/01/28(金) 17:55:06
ふじさんへ
>これは、CGIが実行されて吐き出したHTMLのソースをブラウザが
ほんとうだ!(私はCGIのソースが表示されるものと思っていました)
「無意味でしょう。」は正解でした。ごめんなさい!

ちなみに、cern ではCGIがないと(仮想パスが間違っていると) 500を返します。

まさ 2000/01/29(土) 20:04:59
[[解決]]
いろいろありがとうございます。

ここで聞いたことをいろいろやってみたんですけど、
上手くいきませんでした。
同じサーバーで動いてるものをそのままコピーしてきても動かなくて・・・
やっぱり原因がさっぱりわかりません。
もうちょっといろいろ試してみて、それでもわからなければ、
サーバーの管理者にたずねてみたいと思います。
ありがとうございました。

[上に] [前に] [次に]