bugge: fileupload durch ajax

hallo,

ich habe mir hier ein Ajax Script geholt.
Die dazu passende php-Datei zum upload/verschieben der Datei wird auch richtigerweise aufgerufen (mittels alert getestet).

Wie angegeben ist der Inhalt der Datei folgender:

<?php  
$uploaddir = '/uploads/';  
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);  
  
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {  
  ?> <script type= "text/javascript">alert('done');</script> <?php  
} else {  
  // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!  
  // Otherwise onSubmit event will not be fired  
  ?> <script type= "text/javascript">alert('error');</script> <?php  
}  
?>

Der Ordner Uploads liegt im root und hat alle Rechte. Dennoch kommt ständig alert -> error. Und die Datei kann ich auf meinem Server auch nicht finden..

Weiß jemand, woran das liegt?

  1. Hi,

    $uploaddir = '/uploads/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))

    das sieht nicht gut aus ...

    Der Ordner Uploads liegt im root und hat alle Rechte.

    Kann ich mir nicht vorstellen, wenn du nicht der Server-Admin bist. Als normaler User (Hosting-Kunde) hast du wohl kaum die Berechtigung, auf das Root-Verzeichnis des Server-Filesystems zuzugreifen.
    Verwechsle bitte nicht das Root-Verzeichnis aus HTTP-Sicht mit dem Root-Verzeichnis des Filesystems!

    So long,
     Martin

    --
    Ist die Katze gesund,
    freut sich der Hund.
    1. Hi,

      $uploaddir = '/uploads/';
      $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))

      das sieht nicht gut aus ...

      wie sähe es denn gut aus? ;-)

      Der Ordner Uploads liegt im root und hat alle Rechte.

      Kann ich mir nicht vorstellen, wenn du nicht der Server-Admin bist. Als normaler User (Hosting-Kunde) hast du wohl kaum die Berechtigung, auf das Root-Verzeichnis des Server-Filesystems zuzugreifen.
      Verwechsle bitte nicht das Root-Verzeichnis aus HTTP-Sicht mit dem Root-Verzeichnis des Filesystems!

      Also ich bin kein Hostingkunde sondern hab meinen eigenen Server. D.h. ich gehe aus dem root-Verzeichnis zunächst in den Ordner httpdocs, worin dann meine index-Datei liegt.

      in httpdocs liegt auch der ordner uploads.

      habe $uploaddir auch schon in /httpdocs/uploads/ geändert, geht aber auch nicht.

      über google komme ich immer auf das gleiche beispiel, welches du als unschön bezeichnet hast

      1. Hallo

        Also ich bin kein Hostingkunde sondern hab meinen eigenen Server. D.h. ich gehe aus dem root-Verzeichnis zunächst in den Ordner httpdocs, worin dann meine index-Datei liegt.

        in httpdocs liegt auch der ordner uploads.

        habe $uploaddir auch schon in /httpdocs/uploads/ geändert, geht aber auch nicht.

        Das ist nach deiner Beschreibung das richtige Verzeichnis. Du musst nun prüfen, als welcher Benutzer/in welcher Gruppe PHP ausgeführt wird und diese(n) Wert(e) mit denen des Verzeichnisses /httpdocs/uploads vergleichen.

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        Veranstaltungsdatenbank Vdb 0.3
        1. So gehts:

          $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';

          Danke für eure Hilfe!

  2. Hello,

    hallo,

    ich habe mir hier ein Ajax Script geholt.
    Die dazu passende php-Datei zum upload/verschieben der Datei wird auch richtigerweise aufgerufen (mittels alert getestet).

    Wie angegeben ist der Inhalt der Datei folgender:

    [code lang=php]<?php
    $uploaddir = '/uploads/';

    Die obige Zeile wird vermutlich den Fehler enthalten.

    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

    Das Verschieben des Files in "/uploads/" wird vermutlich nicht möglich sein, weil für PHP in üblicherweise open_basedir gesetzt ist.
    http://de2.php.net/manual/en/ini.core.php#ini.open-basedir

    Weitere Restriktionen wären auch noch denkbar. (suPHP, suExec, usw.)

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de