重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

初心者でただいま、勉強中です。
よろしくお願い致します。

CGIを設定しました。
ローカル(AN HTTPDで確認して動きました)で#!C:/perl/bin/perlと書いたところを、アップするとき、レンタルサーバーの指定に書き換えアップしたのですが・・・何故か掲示板なのに、
「ただいま混み合っています。」とロックを取得する(失敗した場合は処理を終了する)場面で止まっているようです。

この場合、レンタルサーバーがロックを受付ないのでしょうか?

sub lock {
( $lockdir_name ) = @_;

$retry_cnt = 5;# リトライカウント
$sleep_sec = 1;# 待ち時間(秒)
$yuukou_sec = 60;# 有効時間(秒)

$lock_flg = 0;# ロックフラグ(1:ロック済 0:ロック不可)
foreach( 1..$retry_cnt ) {
if( mkdir( $lockdir_name, 0755 ) ) {
$lock_flg = 1;
last;
}
else {
sleep( $sleep_sec );
}
}
if( !$lock_flg ) {
@stat_data = stat $lockdir_name;
if( ( time - $stat_data[9] ) > $yuukou_sec ) {
rmdir $lockdir_name;
}
}
return $lock_flg;
}

#***** アンロックを行う
sub unlock {
( $lockdir_name ) = @_;

rmdir $lockdir_name;
}

他に考えられる簡単な失敗など、考えられることがありましたら、是非何でも、お願い致します。

A 回答 (1件)

サーバで実行すると、lock() が 0 を返す、ということですね?


すると、一番に考えられる問題は「パーミッション」でしょう。

サーバの設定にもよりますが、CGIは nobody などの第三者権限で実行されることが多く、その場合ロックディレクトリを作成するディレクトリ(ロックディレクトリの親ディレクトリにあたる)のパーミッションに第三者用の書き込み権限が必要になります。

ロックディレクトリを設置するディレクトリのパーミッションを、0777 などにしてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました~!その通り、属性が原因でした。777にしたら、バッチリでした。感謝致します。

お礼日時:2003/05/20 11:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!