[▲前のスレッド]

2776. "ファイルをリネームできません"エラーがでます 
ぶぞり 2004/11/18 (木) 12:56:15
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Fedora Core 3に、Cyclamen v3.82を導入しています。
全く新規にサイトを立ち上げて最初の書き込みは成功するのですが、その後に書き込みを行うと
「ファイルをリネームできません」というエラーが出てしまいます。
以前はFedora Core 1で使用してましたが、このような現象は発生したことがありませんでした。
ファイル類のパーミッションは、ディレクトリ・ファイルともすべて755にしています。
オーナー情報も、Apacheが起動しているユーザーと同じものにしていますので、Apacheがファイルを読み書きすることは可能なはずです。
(現にFedora Core 1のときは上記設定で動いてました)

現行のApache、および、Perlのバージョンは以下の通りです。
Apache/2.0.52、perl/v5.8.5

なお、Fedora Core 1時代は、
Apache/2.0.50、Perl/v5.8.3
でした。

どこか確認すべき点がありましたら御教授ください。

よろしくお願いします。


2777. Re:"ファイルをリネームできません"エラーがでます 
あけび 2004/11/18 (木) 13:55:27
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1)
最初の書き込みのみ成功するのが何故なのか今ひとつ見当が付きませんが、
cyclamen.cgi内に

$f_pmt = 0666;
$d_pmt = 0777;

という、スクリプト自身が生成したディレクトリ/ファイルに対するパーミッションを指定する部分がありますので、ここを変更して様子を見ていただけますでしょうか。
$f_pmtがファイル、$d_pmtがディレクトリに対するもので、8進数指定のため先頭の0は必須です。

dataディレクトリ内に既に生成されているファイルも上記デフォルト値になっていると思いますので、場合によってはdataディレクトリ内のファイルを一旦全て削除する必要があるかもしれません。


2778. Re2:"ファイルをリネームできません"エラーがでます 
ぶぞり 2004/11/18 (木) 14:49:04
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
ご回答ありがとうございます。

> 最初の書き込みのみ成功するのが何故なのか今ひとつ見当が付きませんが、
> cyclamen.cgi内に
>
> $f_pmt = 0666;
> $d_pmt = 0777;
>
> という、スクリプト自身が生成したディレクトリ/ファイルに対するパーミッションを指定する部分がありますので、ここを変更して様子を見ていただけますでしょうか。
> $f_pmtがファイル、$d_pmtがディレクトリに対するもので、8進数指定のため先頭の0は必須です。


$f_pmt = 0755;
$d_pmt = 0755;

にしましたが、結果は同じでした。

> dataディレクトリ内に既に生成されているファイルも上記デフォルト値になっていると思いますので、場合によってはdataディレクトリ内のファイルを一旦全て削除する必要があるかもしれません。

上記設定をした上で、dataディレクトリを削除しましたが、やはり同じ結果(=最初だけ書き込みができるがその後は"ファイルをリネームできません"エラー発生)となってしまいました。


以前のApacheの設定と現行のApacheの設定を見たら、suExecモジュールが現行の方のみ組み込まれていましたので外してリスタートしたところ、3つまでは投稿ができるようになりました。。。
4つめからはやはり同じエラーになります。
で、この状態になったときに、書き込みを削除すると同じエラーが出て、リロードすると
file not found
と表示されます。


2779. Re3:"ファイルをリネームできません"エラーがでます 
あけび 2004/11/18 (木) 15:32:08
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1)
なぜ途中までは投稿できるのかが今ひとつ分かりませんが、ファイルのリネームに失敗しているということなので、既に存在しているファイル名への上書きリネームに何か不都合があるのかもしれません。

cylib.cgi中
rename("$data_dir\/$tmp_fname","$data_dir\/$tree_fname") || &error('ファイルをリネームできません.');
の直前に
unlink("$data_dir\/$tree_fname") || &error('ファイルを削除できません.');
を追記するとどうなるでしょう。


2780. Re4:"ファイルをリネームできません"エラーがでます 
ぶぞり 2004/11/18 (木) 15:44:00
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
度々のご回答、ありがとうございます。

> なぜ途中までは投稿できるのかが今ひとつ分かりませんが、ファイルのリネームに失敗しているということなので、既に存在しているファイル名への上書きリネームに何か不都合があるのかもしれません。

実際にサイトをご覧頂いた方が早いかもしれませんが、URLをあまり公にしたくなく。。

> cylib.cgi中
> rename("$data_dir\/$tmp_fname","$data_dir\/$tree_fname") || &error('ファイルをリネームできません.');
> の直前に
> unlink("$data_dir\/$tree_fname") || &error('ファイルを削除できません.');
> を追記するとどうなるでしょう。


今度は、「ファイルを削除できません」と表示されるようになりました。


2781. Re5:"ファイルをリネームできません"エラーがでます 
あけび 2004/11/18 (木) 15:59:55
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; SV1)
if (-e "$data_dir\/$tree_fname"){ unlink("$data_dir\/$tree_fname") || &error('ファイルを削除できません.');}
ではどうでしょう。


2782. Re6:"ファイルをリネームできません"エラーがでます 
ぶぞり 2004/11/18 (木) 16:28:34
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
▼ あけびさん
> if (-e "$data_dir\/$tree_fname"){ unlink("$data_dir\/$tree_fname") || &error('ファイルを削除できません.');}
> ではどうでしょう。


同じく、"ファイルを削除できません"と出てきました。

で、、、ここまでやりとりをしてきましたが、必要な情報をお知らせしていませんでした。
うちにはWEBサーバーが2台あり、データ同期の煩雑さを回避するために、ファイル類はWEBサーバー上におかずにすべてNAS上に置いてあります。
NASはNFSをサポートしておらず、SMBが使えるのみです。
WEBサーバーは最初書きました通りFedora Core 3でして、SMBクライアントとしてNASをマウントしています。
予想レベルですが、FC3に付属しているSMBクライアント機能のファイルハンドリング方法に問題があるために、CGIでファイルを作ったり削除したりするところでエラーが出ているような気がしてきました。。

ということで、試しにサーバーローカルにファイルを配置したところ、問題なく動いてしまいました。。

何だか、こちらが変な使い方?をしているのに、貴重なお時間を頂いてしまいまして大変申し訳ありませんでした。
とりあえずローカルで運用してみようと思います。
どうもありがとうございました。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.84.01
[ut:0.008][st:0.008]