Переименовать файл в 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 лет назад... но никто не сказал правильный ответ, и другие люди (как я) могут найти этот вопрос