**[[質問箱4/477]] [#c0769f6c] |RIGHT:70|LEFT:410|c |~サマリ|is_freeze(): flock() faildと表示される| |~バージョン|1.4.7| |~投稿者|[[一ヶ月いじり]]| |~状態|完了| |~投稿日|&new{2009-07-20 (月) 13:50:10};| ***質問 [#s9a0ea5c] pukiwikiをローカルで構築しているのですが、ブラウザからローカルホストにあるindex.phpにアクセスすると、is_freeze(): flock() faildとだけ表示されます。 php4.3.1、OS Win98です。 検索して調べてみましたが、[[同じような症状の質問>質問箱4/442]]が打ち切られている上に、エラーが何処に有るのかすら分かりません。 ご助言お願いします。 ***回答 [#tfb4a3db] - [[flock 関数>PHP関数:flock]] の注意に次のような警告があります。 >''flock()''はFATのような 旧式のファイルシステムではサポートされていないため、 そのような環境の場合は常に''FALSE''を返すことになります。 (これは特にWindows98ユーザーにとって常に真です) <lib/func.php のis_freeze 関数にあるflock 関数のある2つの行をコメントにしたらどうですか。 -- &new{2009-07-20 (月) 18:40:27}; - ご意見ありがとうございます!早速、助言の通りに調べて見ましたらis_freeze関数にエラーが有りました。エラーがあった二行ですif(! $function_freeze || ! is_page($page){ $is_freeze[$page]=FALSE;となっています。 -- [[一ヶ月いじり]] &new{2009-07-20 (月) 20:05:48}; - 申し訳ありません、flock関数に関係する二行でしたね……上のは気にしないでください正しくはflock($fp. LOCK_SH) or die('is_freeze(): flock() faild')rewind($fp)flock($fp, LOCK_UN) or die('is freeze(): flock() faild'):です -- [[一ヶ月いじり]] &new{2009-07-20 (月) 20:17:44}; - アドバイスの表現をミスったかな・・・。flock 関数を実行しないように、その行をコメントにして無効化してみてください。 -- &new{2009-07-21 (火) 18:33:57}; } else { $fp = fopen(get_filename($page), 'rb') or die('is_freeze(): fopen() failed: ' . htmlspecialchars($page)); // flock($fp, LOCK_SH) or die('is_freeze(): flock() failed'); rewind($fp); $buffer = fgets($fp, 9); // flock($fp, LOCK_UN) or die('is_freeze(): flock() failed'); fclose($fp) or die('is_freeze(): fclose() failed: ' . htmlspecialchars($page)); $is_freeze[$page] = ($buffer != FALSE && rtrim($buffer, "\r\n") == '#freeze'); return $is_freeze[$page]; } - コメント化を知らなかったので、とんちんかんな事をしてしまい申し訳ないです。問題は解決しました!ありがとうございます -- [[一ヶ月いじり]] &new{2009-07-28 (火) 00:54:32}; - 同じ現象に遭遇して情報を探しましたが、flockをコメントアウトするかor dieを消すかくらいしか対処法が見当たりませんでした。しかしファイルの排他制御ができていないのは危ない気がして、ロックしつつエラーにしない方法がないかと考えていますが思いつきません。 -- [[Kats]] &new{2011-12-20 (火) 17:35:51}; - [[dev:BugTrack/164]] や、[[質問箱3/260]] とかにヒントあったかな? -- &new{2011-12-21 (水) 00:36:16}; #comment