renommer un fichier en php sur un serveur de fichiers Windows (chemin unc)
-
28-10-2019 - |
Question
En PHP, je souhaite renommer (déplacer / copier) un fichier sur un serveur de fichiers Windows: "\ monserveur \ dossier1 \ dossier2 \ monfichier.pdf" à "\ monserveur \ dossier1 \ dossier2 \ OLD \ monfichier.pdf"
(tous les dossiers existent déjà et le fichier de destination n'existe pas)
J'ai essayé ceci:
copy("\\\\myserver\\folder1\\folder2\\myfile.pdf", "\\\\myserver\\folder1\\folder2\\OLD\\myfile.pdf");
et
copy("//myserver/folder1/folder2/myfile.pdf", "//myserver/folder1/folder2/OLD/myfile.pdf");
Je reçois:
[function.copy]: failed to open stream: Permission denied
L'ordinateur sur lequel je suis / l'utilisateur connecté en tant que dispose des autorisations pour renommer / déplacer / supprimer / copier dans ce partage / dossier.
Je suppose que je dois en quelque sorte donner des autorisations php ou exécuter php en tant qu'utilisateur?OU?
La solution
PHP fonctionnera comme quel que soit l'utilisateur de votre serveur Web.Vous devrez accorder des autorisations sur ce dossier à n'importe quel compte d'utilisateur.
Autres conseils
N'utilisez pas Copy ... utilisez à la place move_uploaded
Voici un exemple d'obtention de l'image à partir d'un formulaire:
$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);
}
Changez safe_mod sur Off si vous l'avez activé
P.D.Ouais je sais, ce post date d'il y a 5 ans ... mais personne n'a dit de réponse valide et d'autres personnes (comme moi) peuvent trouver cette question