Переименовать файл в php на файловом сервере Windows (unc path)

В PHP я хочу переименовать (переместить / скопировать) файл на файловом сервере Windows: "\myserver\folder1\folder2\myfile.pdf" в "\ myserver \ folder1 \ folder2 \ OLD \ myfile.pdf"

(все папки уже существуют, а целевой файл не существует)

Я попробовал это:

copy("\\\\myserver\\folder1\\folder2\\myfile.pdf", "\\\\myserver\\folder1\\folder2\\OLD\\myfile.pdf");

а также

copy("//myserver/folder1/folder2/myfile.pdf", "//myserver/folder1/folder2/OLD/myfile.pdf");

Я получил:

[function.copy]: failed to open stream: Permission denied 

Компьютер, на котором я / пользователь вошел в систему, имеет разрешения на переименование / перемещение / удаление / копирование в эту общую папку / папку.

Я предполагаю, что мне нужно как-то дать права доступа php или запустить php как мой пользователь? ИЛИ ЖЕ?

2 ответа

Решение

PHP будет работать от имени любого пользователя вашего веб-сервера. Вам необходимо предоставить разрешения для этой папки любой учетной записи пользователя.

Не используйте Copy... вместо этого используйте move_uploaded

Это один из примеров получения изображения из формы:

$img = 'sample.jpg;
$path = '//nameofyourpcinyournetwork/sharedfolder/folderyoulike/';
$pathwithimg = $path.$img;
if (!is_dir($path)) {
  mkdir($path, 0644, TRUE); // TRUE for make it recursive
}
if (file_exists($pathwithimg)) {
 unlink($pathwithimg);
 move_uploaded_file($_FILES["file"]["tmp_name"], $pathwithimg);
 chmod($pathwithimg, 0644);
}

Измените safe_mod на Off, если он включен

П.Д. Да, я знаю, это сообщение 5 лет назад... но никто не сказал правильный ответ, и другие люди (как я) могут найти этот вопрос

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