Cambiar el nombre de un archivo en PHP en un servidor de archivos de Windows (ruta UNC)
-
28-10-2019 - |
Pregunta
En PHP, quiero cambiar el nombre (mover/copiar) un archivo en un servidor de archivos de Windows: " myServer carpeter1 carpeter2 myfile.pdf" a " myServer carpeter1 carpeter2 old myfile.pdf" "
(todas las carpetas ya existen y el archivo de destino no existe)
Intenté esto:
copy("\\\\myserver\\folder1\\folder2\\myfile.pdf", "\\\\myserver\\folder1\\folder2\\OLD\\myfile.pdf");
y
copy("//myserver/folder1/folder2/myfile.pdf", "//myserver/folder1/folder2/OLD/myfile.pdf");
Recibo:
[function.copy]: failed to open stream: Permission denied
La computadora en la que estoy/el usuario inició sesión, ya que tiene permisos para cambiar el nombre/mover/eliminar/copiar a esa compartir/carpeta.
¿Supongo que necesito dar permisos de PHP de alguna manera o ejecutar PHP como mi usuario? ¿O?
Solución
PHP se ejecutará como cualquier usuario que ejecute su servidor web. Debería otorgar permisos en esa carpeta a cualquier cuenta de usuario que sea.
Otros consejos
No use copia ... use Move_uploaded en su lugar
Este es un ejemplo que obtiene la imagen de un formulario:
$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);
}
Cambie SAFE_MOD a OFF si lo tiene encendido
PD Sí, lo sé, esta publicación es hace 5 años ... pero nadie dijo una respuesta válida y otras personas (como yo) pueden encontrar esta pregunta