iis - PHP-Fehler

Translate

Ich versuche, PHP zu schreiben, um eine Datei in einen Ordner auf meinem Webserver hochzuladen. Folgendes habe ich:

<?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>

Ich erhalte folgende Fehler:

Warnung: move_uploaded_file (./ test.txt) [function.move-uploaded-file]: Stream konnte nicht geöffnet werden: Berechtigung in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php in Zeile 3 verweigert

Warnung: move_uploaded_file () [function.move-uploaded-file]: 'C: \ WINDOWS \ Temp \ phpA30E.tmp' kann nicht nach './test.txt' in E: \ inetpub \ vhosts \ mywebsite.com \ verschoben werden httpdocs \ dump \ upload.php in Zeile 3

Warnung: Header-Informationen können nicht geändert werden - Header, die bereits von (Ausgabe gestartet unter E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: 3) in E: \ inetpub \ vhosts \ mywebsite.com \ httpdocs \ gesendet wurden dump \ upload.php in Zeile 4

PHP Version 4.4.7 Ausführen von IIS unter einer Windows-Box. Diese bestimmte Datei / dieser Ordner verfügt über 777 Berechtigungen.

Irgendwelche Ideen?

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

Alle Antworten

Translate

Da es sich um Windows handelt, gibt es kein echtes 777. Wenn Sie verwendenchmodÜberprüfen Sie die Windows-bezogenen Kommentare.

Überprüfen Sie, ob das IIS-Konto auf diese beiden Ordner zugreifen (lesen, schreiben, ändern) kann:

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

Oh mein Gott

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

Tu das nicht.$_FILES['file']['name']könnte sein../../../../boot.inioder eine beliebige Anzahl von schlechten Dingen. Sie sollten diesem Namen niemals vertrauen. Sie sollten die Datei in etwas anderes umbenennen und den ursprünglichen Namen mit Ihrem zufälligen Namen verknüpfen. Bei minimalem Gebrauchbasename($_FILES['file']['name']).

Quelle
Translate

Versuchen Sie, einen Pfad hinzuzufügen. Der folgende Code funktioniert für mich:

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

Warnung: move_uploaded_file () [function.move-uploaded-file]: 'C: \ WINDOWS \ Temp \ phpA30E.tmp' kann nicht nach './people.xml' in E: \ inetpub \ vhosts \ mywebsite.com \ verschoben werden httpdocs \ dump \ upload.php in Zeile 3

ist die wichtige Zeile, die besagt, dass Sie die Datei nicht an der gewünschten Stelle ablegen können. Dies bedeutet normalerweise ein Berechtigungsproblem

Überprüfen Sie, ob der Prozess, auf dem die App ausgeführt wird (normalerweise der Webserver-Prozess für PHP), die Rechte hat, dort eine Datei zu schreiben.

BEARBEITEN:

Moment mal, ich habe ein bisschen mit der Waffe gesprungen. Ist der Pfad zur Datei in der ersten Zeile korrekt?

Quelle
Translate

Ein weiterer zu beachtender Gedanke ist Ihr Verzeichnis-Trennzeichen, das Sie / in einer Windows-Box verwenden.

Quelle
Translate

Fügen Sie den IIS-Benutzer zur Sicherheitsberechtigungsgruppe der Ordner "Dump" hinzu und gewähren Sie ihm Lese- / Schreibzugriff.

Quelle
Translate

Erstellen Sie einen Ordner mit dem Namen "image" mit Ordnerberechtigung777

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