Erreur PHP - Téléchargement d'un fichier

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 ?

请先 登录 后评论

5 réponses

sparkes

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 ?

请先 登录 后评论
Kevin

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;
}
?>
请先 登录 后评论
jmucchiello

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']).

请先 登录 后评论
rupert0

Une autre réflexion à observer est votre séparateur de répertoire, vous utilisez / dans une boîte Windows..

请先 登录 后评论
Sameer

Ajoutez l'utilisateur IIS dans le groupe d'autorisations de sécurité des dossiers 'dump' et donnez-lui un accès en lecture/écriture.

请先 登录 后评论