Почему 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. Вот несколько вещей, которые нужно помнить и проверять (которые являются вариацией одной и той же темы):

  1. Если это запланированное задание / пакетное задание, попробуйте выполнить его из терминала и проверьте все возможные ошибки (остерегайтесь относительных путей):

    C:\> path-to-php script.php

  2. В противном случае, если вы можете, запустите его как пользователь веб-сервера и смотрите ниже:

    • Процесс веб-сервера должен иметь доступ на запись к \\192.168.1.15\htdocsfolder и доступ для чтения к htdocs folder,
    • Проверьте пользователя, под которым запущен процесс вашего веб-сервера. Используйте ваш любимый менеджер процессов / задач / сервисов, чтобы проверить точное имя пользователя и посмотреть, есть ли у этого пользователя требуемые режимы доступа.
    • Если вы находитесь в среде Active Directory, предоставьте доступ к имени пользователя, указанному выше
    • Если OTOH вы находитесь в локальной сети, убедитесь, что имя пользователя существует (является действительным пользователем) и имеет одинаковый пароль на обеих машинах.
    • Если вы делаете это правильно, разрешения для каждого не нужны (и, как правило, плохо)
    • Не выбирать в MS и Windows, но убедитесь в том, что общие ресурсы и разрешения в разделе "Управление моим компьютером" -> "Системные инструменты" -> "Общая папка" указаны Microsoft.

Отладка сложна, вам придется самостоятельно проводить дальнейшие исследования, Google и SO ваши друзья.

Пожалуйста, убедитесь, что пользователь, выполняющий скрипт php, имеет доступ к удаленной файловой системе. Если сценарии выполняются в Linux, полезно смонтировать удаленный общий ресурс. Просто добавлю, ваш код работал нормально с моим делом.

Другие вопросы по тегам