2

Со ссылкой на: https://stackoverflow.com/questions/12211629/php-file-put-contents-not-truncating-file-in-cifs-mount

У нас есть устройство Seagate BlackArmor NAS, которое смонтировано на нашем сервере Ubuntu 10.04 следующим образом:

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/

Кажется, что любая операция, которая должна обрезать файлы и затем вставлять содержимое в эти файлы на NAS, заканчивается заменой только первых нескольких байтов файла (вплоть до длины нового содержимого), а затем остальной части предыдущего "старый" контент все еще находится в файле.

Например:

Содержимое thisisabigfatpandaonwheelsgoingdownthestreet myfile.txt: эта команда может отправлять сообщения на колеса.

Запустите сценарий PHP с кодом: file_put_contents('myfile.txt', 'blah');

Содержимое myfile.txt: blahisabigfatpandaonwheelsgoingdownthestreet

Ожидаемое содержимое файла, очевидно, blah , но это не так.

Использование PHP fwrite() после создания дескриптора файла с помощью fopen('filename', 'w'); имеет тот же эффект. ftruncate() также не работает должным образом. Использование команды оболочки, такой как echo -n "blah" > myfile.txt дает тот же эффект (вот откуда я знаю, что это не специфичная для PHP проблема).

В настоящее время мой единственный обходной путь - удалить файлы, а затем создать их с нуля, но я бы предпочел не менять код в моем приложении, если это возможно (мы только недавно начали использовать устройство NAS). Я бы предпочел применить решение к проблеме, которая кажется связанной с ОС / монтированием.

Есть идеи?

1 ответ1

1

У меня были те же симптомы на моей собственной установке samba (Debian 6 x64 с samba 3.5.6.). Я наконец сузил это до следующего варианта, вызывающего точно такое же поведение:

large readwrite = no

Когда вместо этого выбрано значение « yes (или удалено, так как «да» - настройка по умолчанию), проблемы исчезли.

Поданные отчёты об ошибках в Debain и вышестоящей Samba:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699461
https://bugzilla.samba.org/show_bug.cgi?id=9622

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .