Frage

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 diese Fehler:

Warnung:move_uploaded_file(./test.txt) [function.move-uploaded-file]:Fehler beim Öffnen des Streams: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 emp\phpA30E.tmp“ kann nicht nach „./test.txt“ in E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\upload.php in Zeile 3 verschoben werden

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

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

Irgendwelche Ideen?

War es hilfreich?

Lösung

Da es sich um Windows handelt, gibt es kein echtes 777.Wenn Sie verwenden chmod, ü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\

Andere Tipps

OMG

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

Tu das nicht. $_FILES['file']['name'] könnte sein ../../../../boot.ini oder jede Menge schlechte Dinge.Sie sollten diesem Namen niemals vertrauen.Sie sollten die Datei anders umbenennen und den ursprünglichen Namen mit Ihrem zufälligen Namen verknüpfen.Bei minimaler Nutzung basename($_FILES['file']['name']).

Versuchen Sie, einen Pfad hinzuzufügen.Bei mir funktioniert folgender Code:

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

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

In der wichtigen Zeile heißt es, dass Sie die Datei nicht an der gewünschten Stelle ablegen können, was normalerweise auf ein Berechtigungsproblem hinweist

Überprüfen Sie, ob der Prozess, der die App ausführt (normalerweise der Webserver-Prozess für PHP), über die Rechte verfügt, dort eine Datei zu schreiben.

BEARBEITEN:

Bleib ein bisschen an, ich habe die Waffe ein wenig übersprungen. Ist der Weg zur Datei in der ersten Zeile korrekt?

Ein weiterer zu beachtender Punkt ist Ihr Verzeichnistrennzeichen. Sie verwenden / in einer Windows-Box.

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

Erstellen Sie einen Ordner mit dem Namen „image“ mit Ordnerberechtigung 777

<?php
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']);
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top