iis - Erreur PHP

Translate

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-upload-file]: impossible d'ouvrir le flux: Autorisation refusée dans E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sur la ligne 3

Avertissement: move_uploaded_file () [function.move-upload-file]: Impossible de déplacer 'C: \ WINDOWS \ Temp \ phpA30E.tmp' vers './test.txt' dans E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sur la ligne 3

Avertissement: impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: 3) dans E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sur la ligne 4

PHP version 4.4.7 Exécution d'IIS sur une boîte Windows. Ce fichier / dossier particulier a 777 autorisations.

Des idées?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Comme c'est Windows, il n'y a pas de vrai 777. Si vous utilisezchmod, vérifiez les commentaires relatifs à Windows.

Vérifiez que le compte IIS peut accéder (lire, écrire, modifier) ces deux dossiers:

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
C:\WINDOWS\Temp\
La source
Translate

OMG

move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']);

Ne fais pas ça.$_FILES['file']['name']pourrait être../../../../boot.iniou un certain 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. À une utilisation minimalebasename($_FILES['file']['name']).

La source
Translate

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;
}
?>
La source
Translate

Avertissement: move_uploaded_file () [function.move-upload-file]: Impossible de déplacer 'C: \ WINDOWS \ Temp \ phpA30E.tmp' vers './people.xml' dans E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php sur 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.

ÉDITER:

accrocher un peu J'ai sauté un peu le pistolet est-ce que le chemin d'accès au fichier dans la première ligne est correct?

La source
Translate

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

La source
Translate

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

La source
Translate

Créez un dossier nommé "image" avec l'autorisation de dossier777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
La source