Как PHP скопировать через монтирование SMB - PullRequest
4 голосов
/ 10 июля 2011

У меня есть простой скрипт, который копирует файл из одного монтирования SMB в другое.Исходная файловая система такая же, но веб-сервер другой.Я использую PHP для обработки файла, копируя его во временный каталог, а затем выполняя дополнительные задачи над ним.Эта настройка работала в определенный момент времени, но кажется, что она больше не работает правильно.Может кто-нибудь направить меня в правильном направлении?

fstab mounts :

//192.168.0.x/share /media/folder smbfs username=user,password=mypass
//192.168.0.x/share2 /media/folder2 smbfs username=user,password=mypass

php code :

copy('/media/folder/filename.txt','/media/folder2/temp/filename.txt');

Ошибка :

Warning: copy(/media/folder2/temp/filename.txt): failed to open stream: Permission denied in /www/myphp.php on line xx

Разрешения для папки (не монтирование, а исходная папка на файловом сервере):

/media/folder = 777 
/media/folder2/temp = 777

Ответы [ 3 ]

1 голос
/ 10 июля 2011
system("cp /media/folder/filename.txt /media/folder2/temp/filename.txt");

Может работать на вас.

0 голосов
/ 10 июля 2011

Я изменил команду на:

copy('/media/folder/filename.txt','/tmp/filename.txt');

Очевидно, что обрабатывать файлы на общем ресурсе SMB труднее, чем я думал. Файл следует удалить при перезагрузке компьютера или, возможно, через регулярные промежутки времени, в зависимости от настроек системы.

0 голосов
/ 10 июля 2011

звучит как вопрос, который относится к разрешениям и ОС, а не PHP .. какой веб-сервер?на каком сервере работает?никто: никто?никто не может: никто или www-root: www-root чтение / запись данных в каталоги, к которым вы пытаетесь получить доступ?

sudo su - nobody

  • , вероятно, работать не будетскорее всего, есть /bin/false оболочка
  • никто не может быть неправильной учетной записью .. ps auxw | grep apache | awk {'print $1'} и посмотрите, какой пользователь работает под ней ... затем попробуйте перейти на эту учетную запись с sudo

Прежде чем PHP сможет получить доступ для записи файлов, вам необходимо убедиться, что у пользователя , на котором работает веб-сервер ... есть доступ для чтения / записи длякаталог, в котором вы пытаетесь использовать copy.

...