CGI-BBS > サーバ > Apache > ApacheでCGIを実行できたりできなかったりします。


カレッヂ
カレッヂ


質問者 なみだ  投稿日 2/3(月) 21:05:33
CGIによって実行できるものもありますし、実行できないものもあります。
ソースが間違ってるようにみえるかもしれませんが、例えば実行ができるCGIのソースを
そのままコピーして違うファイルで保存をして、実行をしてみるとサーバーエラーが出るのです。

実行できないCGI↓
#!/usr/bin/perl
print  "Content-type: text/html\n\n";
print "abc";

これが動きません・・・。(ちゃんと最後は改行で終わっています。)
しかし、これは動きます↓
#!/perl/bin/perl
print "Content-type: text/html\n\n";
open(FH , "topuser.txt");
@gazou = <FH>;
close(FH);

print <<EOF
<a href="@{gazou[3]}"><img src="@{gazou[2]}"></a><br>
EOF

エラーの種類は、
Server error!Error 500
Error message: Premature end of script headers: up.cgi
もしかしたら文字コードなのかと思い、EUC,UTF-8とやってみたのですがダメでした。
パーミッションはとりあえず全て777でやっています。

それに、昨日までは実行できていたCGIが今日になって急にサーバーエラーが出るように・・・
なにか他に原因は考えられるでしょうか?
フリーのCGIは全部サーバーエラーが出ます。

実行環境です。
RedHatLinux8.0
Apache2.0.40
Perlはmod_perl
ActivePerlにしたら直るなんてことないでしょうか?

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:UNIX
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:(未選択)

回答者 やまだ  [削除]  投稿日 2/3(月) 23:33:21
微妙にパスが違うように見えるんですが。
#!/usr/bin/perlと#!/perl/bin/perl
質問者 なみだ  [削除]  投稿日 2/4(火) 01:04:14
回答ありがとうございます。
すいませんperlのパスはただここに書きこんだ時に間違えただけです。
Windowsサーバーでも動作を確認していましたので。
Windowsサーバーでは問題なくCGIは全て動くのですが、
なぜかLinuxになると一部のCGIしか動作しないんですよね。
まだ原因がつかめないです。
回答者 やまだ  [削除]  投稿日 2/4(火) 02:04:56
#!/usr/bin/perl --
では?(行末コードが CRLFの回避)
質問者 なみだ  [削除]  投稿日 2/4(火) 07:56:30
やまださんありがとうございます!
まさにその通りでした。
#!/usr/bin/perl --にしたらできました。
初歩的なミスでしたね。

ありがとうございました。

このページは終了したので返信(回答)は書きこめません
 


Web裏技