カウンターの機能らしきものを他のプログラムに組み込んだら、エラーが出てしまいました(T-T)

[上に] [前に] [次に]
ソース [E-Mail] 1999/10/25(月) 16:41:48
主に改造したいのが、「KENT WEB」の
「COSMO NAVI」なのですが・・・・
http://cgi.tako.ne.jp/~morisen/TEST/navi.txt

これにカウンター機能を
付けようとして、またまた「KENT WEB」の「G-LIGHT」
http://cgi.tako.ne.jp/~morisen/TEST/glight.txt
のソースを取り出して、切ったりくっつけたりしました。

そうしたら、オンライン上に立ち上げた際に、
Content-type: text/html
---------------------------
ERROR !
Can't create tempfile
---------------------------
というようなエラーが出てしまいました。


ちなみに、「COSMO NAVI」に追加した機能は、
上から・・・・・

## ---- <カウンター設定> -------------------- #
$counter = 1; # ミニカウンタの有無 (0=no 1=テキスト 2=GIF画像)
$mini_fig = 5; # ミニカウンタの桁数
$cnt_color = "#DD0000"; # テキストのとき:ミニカウンタの色
$gif_url = "."; # GIFのとき :画像までのディレクトリ
$mini_w  = 8; #       〃     :画像の横サイズ
$mini_h  = 12; #       〃     :画像の縦サイズ
$cntfile = './count.dat'; # カウンタファイル

ヘッダーの代入直後に(&header;)

# カウンタ処理
if ($counter) { &counter; }

を・・・・・
一番後尾に、

## --- カウンタ処理
sub counter {
# カウントファイルを読みこみ
open(NO,"$cntfile") || &error("Can't open $cntfile",'0');
$cnt = <NO>;
close(NO);

# 閲覧時のみカウントアップ
if ($FORM{'mode'} eq '') {
# カウントアップ
$cnt++;

# テンポラリーファイルを定義
$prono = "$$";
if ($prono eq "") {
srand;
$prono =  1000000000000000 * rand;
}
$cnt_temp = "$lock_dir\/$prono\.tmp";

# テンポラリーファイルを作成
open(TMP,">$cnt_temp") || &error("Can't create tempfile",'0');
print TMP $cnt;
close(TMP);

# パーミッションを666に
chmod (0666,"$cnt_temp");

# リネームする
rename($cnt_temp,$cntfile);

# もしテンポラリーファイルが残っていたら削除
if (-e $cnt_temp) { unlink($cnt_temp); }
}

# 桁数調整
while(length($cnt) < $mini_fig) { $cnt = '0' . "$cnt"; }
@cnts = split(//,$cnt);

print "<table border=0 align=left><tr><td>\n";

# GIFカウンタ表示
if ($counter == 2) {
foreach (0 .. $#cnts) {
print "<img src=\"$gif_url/$cnts[$_]\.gif\" alt=\"$cnts[$_]\" width=\"$mini_w\" height=\"$mini_h\">";
}

# テキストカウンタ表示
} else {
print "<font color=$cnt_color face=\"verdana,Times New Roman,Arial\">$cnt</font>";
}

print "</td></tr></table>\n";
}

を、そのまんまいじらず、ボコボコと組み込んでみました。
不味いところが有ったら教えてください。
よろしくお願いします m(_ _)m。

ソース 1999/10/25(月) 16:44:47
ちなみに、count.datファイルを
プログラムと同じ場所に入れて、パーミッションも666に
設定しています。

さくらいゆずる 1999/10/25(月) 18:20:53
$cnt_temp = "$lock_dir\/$prono\.tmp";
という部分がありますが、ここの$lock_dirが定義されていないようですが。
そのせいではないでしょうか。
そして、$lock_dirで定義したのと同じ名前のディレクトリを作成する必要があると思います。
(パーミッションは・・・・777?←かなり自信なし)

間違っている可能性があるのでどなたかフォローお願いします(爆)。

ソース 1999/10/28(木) 12:11:28
どうもありがとうございました。
カウンターはきちんと表示されるように成りました。

$lock_dir = ".";

上のものを組み込んだのですが、
これで宜しいのでしょうか?

カウンター自体はちゃんと回ってます。

さくらいゆずる 1999/10/28(木) 15:50:34
きちんと作動しているのならば。良いと思います(多分・・・(^^;;;)。

ソース 1999/10/28(木) 21:04:34
[[解決]]
どうも、お世話になりましたm(_ _)m

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