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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top