CGI-BBS > CGI > Perl > Perlについてファイル自動作製をするとエラーになってしまう。


カレッヂ
カレッヂ


質問者 ももんが  投稿日 2003/12/22(月) 02:39:05
先にプログラムを載せておきます。
ファイル名index.shtml

<html>
<head><title>ログテスト</title></head>
<body>
ログテスト
<!--#exec cgi="test.cgi"-->
</body>
</html>

ファイル名 test.cgi
#! /usr/bin/perl

# アクセス情報の整形
$ln = "test";

# ファイルへの書き込み
open(FILE, ">>test/test.txt") or die("ERROR: open log-file.");
eval{ flock(FILE, 2) };
seek(FILE, 0, 2);
print FILE $ln;
close FILE;

というSSIを使ってtest.txtファイルに記入したいのですが。
ファイルへの記入はちゃんと出来ているのにブラウザには

「ログテスト」の後ろに「サーバーの内部エラー サーバの内部でエラーまたは設定上の問題が発生したた
め、リクエストを処理できませんでした。このディレクトリへの CGI アクセスが有
効にされているかどうか、サーバの管理者にご確認ください。」
との表示が出てしまいます。
レンタルサーバーの管理者に問い合わせてみたところ。
「ログは取れていてもファイルの設置や設定が間違っているとエラーは表示されます。サーバー内部のcgiが正常に動作しているか確認致
しましたところ不具合はございません。設置したファイルはトップページでしょうか?
当社サーバーの場合ですとSSIのファイルの拡張子は.shtmlである必要がございま
す。」
との返答をいただきました。もちろん.shtmlにしてありますし。
何よりプログラムは動いて書き込みはされているのです。
それなのにエラー表示が出てしまうのはどこかの記述に間違いがあるのでしょうか?
ご教授願いたいと思います。



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

回答者 トンマ  [削除]  投稿日 2003/12/29(月) 02:29:12
#! /usr/bin/perl

# アクセス情報の整形
$ln = "test";

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

# ファイルへの書き込み
open(FILE, ">>test/test.txt") or die("ERROR: open log-file.");
eval{ flock(FILE, 2) };
seek(FILE, 0, 2);
print FILE $ln;

close FILE;

CGIスクリプトを実行したのにもかかわらず
何も出力結果が出なかったので、サーバーは
エラーを出したものと思います。
よって、
print "Content-type:text/html\n\n";
を追加することによりエラーを防ぐことができると思います。
質問者 ももんが  [削除]  投稿日 2004/1/1(木) 14:44:52
レスありがとうございます!
指示されたように修正しましたら問題なく動作しました。
私には思いもよらない原因でした。
この掲示板に書き込んでよかったと思います。
トンマさんありがとうございました、非常に感謝しております。
CGIについてもっと精進したいと思います。

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


Web裏技