Rinomina un file in PHP su un file server di Windows (percorso UNC)
-
28-10-2019 - |
Domanda
In PHP voglio rinominare (muoversi/copiare) un file su un file server di Windows: " myserver cartella1 cartella2 myfile.pdf" a " myserver cartella1 cartella2 old myfile.pdf"
(Tutte le cartelle esistono già e il file di destinazione non esiste)
Ho provato questo:
copy("\\\\myserver\\folder1\\folder2\\myfile.pdf", "\\\\myserver\\folder1\\folder2\\OLD\\myfile.pdf");
e
copy("//myserver/folder1/folder2/myfile.pdf", "//myserver/folder1/folder2/OLD/myfile.pdf");
Ricevo:
[function.copy]: failed to open stream: Permission denied
Il computer su cui sono attivo/Utente effettuato l'accesso a causa delle autorizzazioni per rinominare/spostarsi/eliminare/copiare su quella condivisione/cartella.
Immagino di dover in qualche modo dare autorizzazioni PHP o eseguire PHP come mio utente? O?
Soluzione
PHP sarà in esecuzione come qualsiasi utente che il tuo server web esegue. Dovresti concedere le autorizzazioni su quella cartella su qualunque account utente sia.
Altri suggerimenti
Non usare copia ... usa invece move_uploaded
Questo è un esempio che ottiene l'immagine da una forma:
$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);
}
Cambia Safe_mod su Off se lo hai
PD sì, lo so, questo post è 5 anni fa ... ma nessuno ha detto una risposta valida e altre persone (come me) potrebbero trovare questa domanda