Ajoutez l'utilisateur IIS dans le groupe d'autorisations de sécurité des dossiers 'dump' et donnez-lui un accès en lecture/écriture.
J'essaie d'écrire du PHP pour télécharger un fichier dans un dossier sur mon serveur Web. Voici ce que j'ai :
<?php
if ( !empty($_FILES['file']['tmp_name']) ) {
move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
header('Location: http://www.mywebsite.com/dump/');
exit;
}
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN'
'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html>
<head>
<title>Dump Upload</title>
</head>
<body>
<h1>Upload a File</h1>
<form action='upload.php' enctype='multipart/form-data' method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='1000000000' />
Select the File:<br /><input type='file' name='file' /><br />
<input type='submit' value='Upload' />
</form>
</body>
</html>
J'obtiens ces erreurs :
Avertissement : move_uploaded_file(./test.txt) [function.move-uploaded-file] : échec de l'ouverture du flux : autorisation refusée dans E:inetpubvhostsmywebsite.comhttpdocsdumpupload.php sur ligne 3
Attention : move_uploaded_file() [function.move-uploaded-file] : Impossible de déplacer 'C:WINDOWSTempphpA30E.tmp' vers './test.txt' dans E:inetpubvhostsmywebsite .comhttpdocsdumpupload.php à la ligne 3
Avertissement : Impossible de modifier les informations d'en-tête - les en-têtes ont déjà été envoyés par (la sortie a commencé à E:inetpubvhostsmywebsite.comhttpdocsdumpupload.php:3) dans E:inetpubvhostsmywebsite.com httpdocsdumpupload.php à la ligne 4
Version PHP 4.4.7 Exécution d'IIS sur une boîte Windows. Ce fichier/dossier particulier dispose de 777 autorisations.
Des idées ?
Ajoutez l'utilisateur IIS dans le groupe d'autorisations de sécurité des dossiers 'dump' et donnez-lui un accès en lecture/écriture.
Une autre réflexion à observer est votre séparateur de répertoire, vous utilisez / dans une boîte Windows..
OMG
move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);
Ne fais pas ça. $_FILES['file']['name']
pourrait être ../../../../boot.ini
ou n'importe quel nombre de mauvaises choses. Vous ne devriez jamais faire confiance à ce nom. Vous devez renommer le fichier autrement et associer le nom d'origine à votre nom aléatoire. Utilisez au minimum basename($_FILES['file']['name'])
.
Essayez d'ajouter un chemin. Le code suivant fonctionne pour moi :
<?php
if ( !empty($_FILES['file']) ) {
$from = $_FILES['file']['tmp_name'];
$to = dirname(__FILE__).'/'.$_FILES['file']['name'];
if( move_uploaded_file($from, $to) ){
echo 'Success';
} else {
echo 'Failure';
}
header('Location: http://www.mywebsite.com/dump/');
exit;
}
?>
Attention : move_uploaded_file() [function.move-uploaded-file] : Impossible de déplacer 'C:WINDOWSTempphpA30E.tmp' vers './people.xml' dans E:inetpubvhostsmywebsite .comhttpdocsdumpupload.php à la ligne 3
est la ligne importante qui indique que vous ne pouvez pas placer le fichier où vous le souhaitez et cela signifie normalement un problème d'autorisations
vérifiez que le processus exécutant l'application (normalement le processus des serveurs Web pour php) a le droit d'y écrire un fichier.
MODIFIER :
attends un peu J'ai sauté un peu le pistolet est-ce que le chemin vers le fichier dans la première ligne est correct ?