投稿日:2004年07月18日 作成鷹の巣

No.16761 重複登録拒否CGIでエラーがでます。



重複登録拒否CGIでエラーがでます。

No.16761 投稿時間:2004年07月18日(Sun) 02:42 投稿者名:bunbun URL:

ほとんどのCGIスクリプトが動作するようになったのですが、
1つ動作しないスクリプトがあり困っています。
レンタルサーバーのperlのバージョンは5.005_03、
自宅サーバーのperlのバージョンは5.8.1です。
perlのバージョンの違いなのかサーバーの設定の問題なのかわかりません。
スクリプト配布元ではサポートは行っていないようです。

http://www.oyoyo.ne.jp/webgame/
対象のスクリプトは、
親方様の重複登録拒否ツール v.1.10 ipcheck.cgiで以下のコンパイルエラーがでます。

Can't modify single ref constructor in lock at ipcheck.cgi 行番号 1435, near "*LOCK) "

1435: lock(\*LOCK) || die 'ロック違反です。10秒ほど待ってからやり直してください。';

lock関数の中身は以下になります。
$IPdir のパーミッションは 755 と 777 の両パターンを
ロック方式は flock 、 mkdir 共に試しました。
#
# ロック・アンロック処理
#
sub lock {
my $fh = shift;
my $path = "$IPdir/$LockFile";

if ($LockType == 0) {
rmdir($path);
open($fh, ">>$path") || die $!;
flock($fh, 2); # LOCK_EX
chmod(0666, $path);
return 1;
} else {
unlink($path);
if (mkdir($path, 0777)) {
return 1;
} else {
rmdir($path) if (time() - (stat($path))[9] >= 10);
return 0;
}
}
}

ipcheckの改造は行っておりません。
また、同構成のipcheckを組み込んだ箱庭をレンタルサーバー上で
運用しておりますが、そちらは問題なく動いています。


perl のインストール手順を教えてください。

No.16773 投稿時間:2004年07月18日(Sun) 21:26 投稿者名:bunbun URL:

以下のページを参考に 5.005_03 のインストールをしたのですが、
http://www.hero-island.ne.jp/linux/perl.html
make コマンドを実行すると以下のエラーが表示されます。
質問に対して何を入力すればよいのか全く分かりません。
インストール手順について分かりやすいページがあれば教えてください。

#make: *** `miniperlmain.o' に必要なターゲット
`<\343\202\263\343\203\236\343\203\263\343\203\211\343\203\251\343\202\244\343\203\263>'
を make するルールがあり ません. 中止。


自己解決しました。

No.16777 投稿時間:2004年07月19日(Mon) 00:41 投稿者名:bunbun URL:

lock関数の引数を \*LOCK から *LOCK2 と変更したら動くようになりました。
perl v5.8.1 では \*LOCK は NG のようです。


|目次|掲示板|過去ログ目次|▲頁先頭|