Почему PHP не может скопировать файл в общую папку в локальной сети?
Мне нужно скопировать файл с одного компьютера на другой компьютер, который подключен к локальной сети. У меня есть IP-адрес этих двух машин. Я использовал такой код для достижения этой цели,
$file = 'file.text';// inside htdocs folder
$newfile = '\\\\192.168.1.15\\htdocsfolder\\';
if ( copy($file, $newfile) ) {
echo "Copy success!";
}else{
echo "Copy failed.";
}
но копирование не удалось. Как отладить, почему файл не копируется в папку htdocs другого компьютера? нужно ли мне изменить общий доступ на обоих компьютерах?
Пожалуйста помоги. Спасибо
2 ответа
Вы, кажется, на машине Windows. Вот несколько вещей, которые нужно помнить и проверять (которые являются вариацией одной и той же темы):
Если это запланированное задание / пакетное задание, попробуйте выполнить его из терминала и проверьте все возможные ошибки (остерегайтесь относительных путей):
C:\> path-to-php script.php
В противном случае, если вы можете, запустите его как пользователь веб-сервера и смотрите ниже:
- Процесс веб-сервера должен иметь доступ на запись к
\\192.168.1.15\htdocsfolder
и доступ для чтения кhtdocs folder
, - Проверьте пользователя, под которым запущен процесс вашего веб-сервера. Используйте ваш любимый менеджер процессов / задач / сервисов, чтобы проверить точное имя пользователя и посмотреть, есть ли у этого пользователя требуемые режимы доступа.
- Если вы находитесь в среде Active Directory, предоставьте доступ к имени пользователя, указанному выше
- Если OTOH вы находитесь в локальной сети, убедитесь, что имя пользователя существует (является действительным пользователем) и имеет одинаковый пароль на обеих машинах.
- Если вы делаете это правильно, разрешения для каждого не нужны (и, как правило, плохо)
- Не выбирать в MS и Windows, но убедитесь в том, что общие ресурсы и разрешения в разделе "Управление моим компьютером" -> "Системные инструменты" -> "Общая папка" указаны Microsoft.
- Процесс веб-сервера должен иметь доступ на запись к
Отладка сложна, вам придется самостоятельно проводить дальнейшие исследования, Google и SO ваши друзья.
Пожалуйста, убедитесь, что пользователь, выполняющий скрипт php, имеет доступ к удаленной файловой системе. Если сценарии выполняются в Linux, полезно смонтировать удаленный общий ресурс. Просто добавлю, ваш код работал нормально с моим делом.