Как скопировать PHP через SMB-монтирование


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

Крепления Fstab:

//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 код:

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
Author: Allan Bogh, 2011-07-10

3 answers

system("cp /media/folder/filename.txt /media/folder2/temp/filename.txt");

Может сработать для вас.

 1
Author: GregSchoen, 2011-07-10 17:07:22

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

sudo su - nobody

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

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

 0
Author: sdolgy, 2011-07-10 05:41:49

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

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

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

 0
Author: Allan Bogh, 2011-07-10 17:03:24