3

file_put_contents()のPHPドキュメントで述べられているように、PHPのおよびfwrite()(でファイルハンドルを開いた後fopen('filename', 'w');)関数がターゲットファイルを切り捨てないという奇妙な問題がありますfwrite()。このファイルは、次のように CIFS を使用して Linux サーバー (Ubuntu 10.04) にマウントされた Seagate BlackArmor NAS デバイスに存在します。

mount -t cifs -o defaults,credentials=/etc/smbpass/demo.smbpass,uid=1005,gid=1005,dir_mode=0770,file_mod=0660 //xxx.xxx.xxx.xxx/demo/files /var/www/mysite/src/files/

例:

myfile.txt の内容:thisisabigfatpandaonwheelsgoingdownthestreet

次のコードを使用して PHP スクリプトを実行します。file_put_contents('myfile.txt', 'blah');

myfile.txt の内容:blahisabigfatpandaonwheelsgoingdownthestreet

ファイルの予想される内容は明らかblahに ですが、そうではありません。

何か案は?

4

2 に答える 2

2

私自身の samba セットアップ (samba 3.5.6 を使用した Debian 6 x64) でまったく同じ症状が発生しました。最終的に、まったく同じ動作を引き起こす次のオプションに絞り込みました。

large readwrite = no

代わりに設定するとyes(または、デフォルト設定が yes であるため、削除すると)、問題はなくなりました。

Debain および上流の Samba に対するバグ レポートの提出:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699461
https://bugzilla.samba.org/show_bug.cgi?id=9622

于 2013-01-29T14:32:45.193 に答える
1

マウントフラグのため、ファイルは誰でも読み取り/書き込み可能ではありません

mount -t cifs -o defaults,credentials=/etc/smbpass/demo.smbpass,uid=1005,gid=1005, dir_mode=0770,file_mod=0660 //xxx.xxx.xxx.xxx/demo/files /var/ www/mysite/src/files/

これを Web サーバー経由で実行している場合、別のユーザーとして実行されるため、ファイルにアクセスする権限がありません。is_writable('myfile.txt') を使用して、そうであるかどうかを確認できます。

于 2012-08-31T08:44:56.720 に答える