Oggy: file upload

hi,

ich habe folgendes problem: ich habe einen fileupload der mir sagt, daß alles ok ist, aber das hochgeladene file ist dann nicht auf dem server...
der vollständige code sieht folgendermaßen aus:

<body>
<?php
  if(isset($_POST['send'])){
    print "<pre>";
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], '/tmp/'.$_FILES['userfile']['name']))
      {print "Upload: ok...\n"; print_r($_FILES);}
    else {print "Upload: fehler\n"; print_r($_FILES);}
  } else {
?>
  <form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="post">
    Upload: <input name="userfile" type="file"><br>
    <input type="hidden" name="send" value="ok">
    <input type="submit" value="upload">
  </form>
<?php } ?>
</body>

ich erhalte dann folgende ausgabe im browser:

Upload: ok...
Array
(
    [userfile] => Array
        (
            [name] => Wasserlilien.jpg
            [type] => image/pjpeg
            [tmp_name] => /tmp/php9kgNgC
            [error] => 0
            [size] => 83794
        )
)

also sollte wegen der zeile mit 'move_uploaded_file' die datei doch im /tmp/ verzeichnis sein? ist sie aber nicht...

wer weiß rat?

danke...

  1. moin!

    kommt drauf an welches tmp verzeichnis du meinst. in deinem beispiel ist es das im root. normalerweise hat der www-user keine rechte auf das verzeichnis.
    guck mal hier: http://aktuell.de.selfhtml.org/artikel/phpasp/php-uploadcheck/index.htm

    gruß.
    roger.

    --
    Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  2. Hallo !
    Ich befasse mich auch gerade mit Upload und steige ebenso noch nicht ganz durch.
    Soviel ich weiß, wird die Datei wieder gelöscht (temporär) folglich muß man sie vorher kopieren, aber wie genau versuche ich auch gerade
    rauszufinden. auf jeden Fall mit dem Befehl copy !

    MFG
    Zimbo

    1. Hallo !
      Ich befasse mich auch gerade mit Upload und steige ebenso noch nicht ganz durch.
      Soviel ich weiß, wird die Datei wieder gelöscht (temporär) folglich muß man sie vorher kopieren, aber wie genau versuche ich auch gerade
      rauszufinden. auf jeden Fall mit dem Befehl copy !

      hi, habe das problem für mich gelöst...

      du mußt nicht unbedingt den copy befehl nutzen, es geht auch mit move_uploaded_file...

      ---snip---
      $src=$DOCUMENT_ROOT.'/bilder/'.$_FILES['userfile']['name'];
      move_uploaded_file($_FILES['userfile']['tmp_name'], $src) or die('Upload Fehler...');
      ---snip---

      der rest des scriptes steht im 1. beitrag...

      zusätzlich braucht das verzeichnis /bilder/ allgemeine schreibrechte, was auf meinem provider nicht der fall war...

      jetzt funktioniert alles...

  3. Hello,

    also sollte wegen der zeile mit 'move_uploaded_file' die datei doch im /tmp/ verzeichnis sein? ist sie aber nicht...

    wer weiß rat?

    Ich:
    <cite>
    If you were thinking, like me, that move_uploaded_file() operates on uploaded files even if they are outside your basedir (as set in the open_basedir directive) - you are *wrong*. This was a very unpleasant surprise which I wasn't expecting - and I do hope this behaviour changes in future versions. Until then, you can add /tmp (or whatever your upload_tmp_dir is) to the open_basedir directive, like this:

    httpd.conf syntax

    php_admin_value open_basedir /home/yoursite:/tmp
    </cite>

    Das hat bei mir auch immer nicht funktioniert. Ich habe die Files daher klassisch mit copy() kopiert. Jetzt habe ich das eben im Manual / Userkommentare gefunden.

    Prüf mal Dein Basedir.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen