• Hi!
    Ich habe folgendes Problem:
    Ich habe mithilfe von PHP und eines Formulars ein Uploadscript gebastelt:


    Und hier das Script, dass ausgeführt wird, wenn eine Datei hochgeladen wurde:

    Code
    $time=time();
    $file = $HTTP_POST_FILES['userfile']['name'];
    $temp = $HTTP_POST_FILES['userfile']['tmp_name'];
    $path_parts = pathinfo($file);
    $filename = "file_" . $time . "." . $path_parts["extension"];
    copy($temp, '/useruploads/'.$filename);


    Auf meinem lokalen Apache-Server funktioniert das prima, doch wenn ich das auf dem externen Server laufen lasse gib's 'nen Fehler:

    Code
    Warning: copy(): open_basedir restriction in effect. File(/tmp/phpPsQbiG) is not within the allowed path(s): (/home/httpd/webs/-Benutzername-) in ...


    Das heißt wohl soviel wie: "Du darfst nicht auf den Temp-Ordner dieses Servers zugreifen, in dem deine hochgeladene Datei liegt, weil das außerhalb deines eigenen Bereichs liegt!" (Falls die Datei überhaupt hochgeladen wurde...)

    Gibt es eine möglichkeit das zu umgehen?

    Mathe ist geil!!

  • OK, habs geändert. Dadurch hat sich die Fehlermeldung etwas verändert:

    Code
    Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 568 is not allowed to access / owned by uid 0 in ...

    EDIT:
    Hab grad das hier gefunden:

    Code
    Anmerkung: Wenn Safe Mode aktiviert ist, überprüft PHP, ob die Dateien/Verzeichnisse die mit dem Skript bearbeitet werden sollen, die gleiche UID (Eigentümer) haben wie das Skript selbst.
    
    
        Anmerkung: move_uploaded_file() ist von den normalen Safe Mode UID-Einschränkungen nicht betroffen. Dies ist nicht unsicher, da move_uploaded_file() nur mit via PHP hochgeladenen Dateien arbeitet.


    Was bedeutet das?

    Mathe ist geil!!

  • Welche werte hast du der Funktion übergeben?
    Es scheint so, als würdest du auf den root Ordner des Servers zugreifen wollen (Linux Verzeichnisstränge sind ein wenig anders als die der Windose :wink: ).

    Beispiel:
    ('ordner/datei.xyz')
    Läuft unter Windows.
    Läuft unter linux.

    ('/ordner/datei.xyz')
    Könnte unter Windows laufen (weis ich grad nicht genau).
    Läuft unter Linux definitiv nicht so, wie man es gerne hätte ;)

    Falls du also ein / am Anfang des Pfades hast, entferne den mal.

  • JAAAAAAAAAAAA! :lol:
    Das war es!!
    Digges dankeschön! :D

    Edit:
    Hab ich das also richtig verstanden? Der Server erlaubt es eigentlich nicht, dass ich Dateien außerhalb meines bereiches kopiere, aber wenn ich sie mit move_uploaded_file verschiebe sieht er ein, dass das MEINE ist?

    Mathe ist geil!!