Fehler bei Bild Upload

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler bei Bild Upload

    Hallo,

    habe mir ein Script zusammengebastelt, mit dem ich eine Bilddatei auf den Server laden und diese zusätzlich als Thumbnail speichern kann. Auf meinem Rechner (Mac OSX + XAMPP) funktioniert alles einwandfrei. Wenn ich das ganze jedoch auf meinem Shared Server von net-housting.de ausprobiere, erscheint folgender Fehler und ich kann keine Bilddatei in den entsprechenden Ordnern vorfinden:
    Warning: getimagesize() [function.getimagesize]:
    Unable to access ../Fotos/test.png in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 5

    Warning: getimagesize(../Fotos/test.png) [function.getimagesize]:
    failed to open stream: No such file or directory in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 5

    Warning: Division by zero in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6

    Warning: imagecreate() [function.imagecreate]:
    Invalid image dimensions in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6

    Warning: imagecopyresized(): supplied argument is not a valid Image resource in
    /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6
    phpinfo() sagt mir über GD folgendes, sollte eigentlich passen:


    Hier der Code:
    PHP-Code:
    $dateiname $HTTP_POST_FILES['datei']['name'];

    copy($datei"../Fotos/$dateiname");

    $groesse=getimagesize("../Fotos/$dateiname");
    $breite=$groesse[0];
    $hoehe=$groesse[1];
    $typ=$groesse[2];

    $hoehe2=$hoehe*96/$breite;
    $image1 imagecreate(96,$hoehe2);
    switch (
    $typ)
    {
    case 
    1:
    $image imagecreatefromgif("../Fotos/$dateiname");
    break;
    case 
    2:
    $image imagecreatefromjpeg("../Fotos/$dateiname");
    break;
    case 
    3:
    $image imagecreatefrompng("../Fotos/$dateiname");
    break;
    case 
    4:
    $image imagecreatefromwbmp("../Fotos/$dateiname");
    break;
    default: 
    $gestorben="ja";
    }
    imagecopyresized($image1$image0,00,0,96,$hoehe2,$breite,$hoehe);

    switch (
    $typ)
    {
    case 
    1:
    imagegif($image1,"../Fotos/Thumbs/$dateiname");
    break;
    case 
    2:
    imagejpeg($image1,"../Fotos/Thumbs/$dateiname",50);
    break;
    case 
    3:
    imagepng($image1,"../Fotos/Thumbs/$dateiname");
    break;
    case 
    4:
    imagewbmp($image1,"../Fotos/Thumbs/$dateiname");
    break;
    default: 
    $gestorben="ja";

    Ich denke, das liegt irgendwie an CHMOD, habe aber leider keinen blassen Schimmer, was man dagegen unternehmen könnte und bitte um Eure Hilfe.

    Danke vielmals!

  • #2
    Ich denke, das liegt irgendwie an CHMOD...
    Klingt logisch, wo Du das doch gar nicht benutzt...
    Dateiuploads verschiebt man mit move_uploaded_file.
    Und bevor man wild herumrät, prüft man eine Datei erstmal auf Existenz.

    Kommentar


    • #3
      $dateiname != $datei, auch bei dir lokal!

      Übrigens solltest du move_uploaded_file() verwenden.

      Kommentar


      • #4
        Hi,

        sorry, ich bin Anfänger, deshalb die Sache mit CHMOD und "Rumraterei"...

        Habe move_uploaded_file() mal versucht einzubauen, anstatt copy():

        PHP-Code:
        $uploaddir "../Fotos/$dateiname";
        move_uploaded_file($_FILES['datei']['tmp_name'], $uploaddir $_FILES['datei']['name']); 
        Am Fehler ändert das jedoch leider nichts.

        Was ich nun nicht verstanden habe ist, ob Ihr längst wisst wo der Fehler liegt, ich Euch aber nerve?? (vorallem @kuddeldaddeldu)

        Vielen Dank Euch in jedem Fall!

        Kommentar


        • #5
          Bist du SICHER, dass du einen ../ Pfad verwenden willst/hast ?
          PHP-Code:
          //besser einen absoluten Pfad
          $_SERVER['DOCUMENT_ROOT'].'/pfad/zu/Fotos/'.$_FILES['datei']['name']; 
          Ist so der Fehler weg ?
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Ich wollte sagen, dass ich nicht weiß welchen Wert $datei hat, vermutlich gar keinen, weil du eigentlich $dateiname schreiben wolltest, wobei das auch falsch wäre.

            Dein neuer Versuch ist auch nicht das Gelbe vom Ei. Schau dir mal an, wohin eine hochgeladene Datei namens 'file.ext' verschoben werden würde - nach "../Fotos/$dateinamefile.ext".

            Bau doch einfach das Beispiel aus dem Manual nach. Und erst wenn du die Datei sauber hochladen, verschieben und anschließend ihre Existenz am Zielort überprüfen kannst, manipulierst du den Inhalt (das Bild).

            Kommentar


            • #7
              Hi,

              vieeelen Dank Euch beiden, jetzt hats geklappt!

              Habe den Pfad nun angegeben wie im Doku-Beispiel, das war's tatsächlich. Die Bildqualität war dann allerdings erstmal grausam, bis ich imagecreate() durch imagecreatetruecolor() ersetzt habe.

              Falls es irgendjemanden interessieren sollte, hier mein neuer Code:

              PHP-Code:
              <?php

              include 'session.php';

              $dateiname $_FILES['datei']['name'];

              $uploaddir '/srv/www/htdocs/web247/html/schubert/Fotos/';
              $uploadfile $uploaddir basename($_FILES['datei']['name']);

              if (
              move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile)) {
                  echo 
              "Das Bild wurde hochgeladen und abgespeichert. Es heißt <br>".$dateiname."<br>Diesen Namen bitte beim Eintragen des entsprechenden Produkts eingeben.";
              } else {
                  echo 
              "Upload nicht erfolgreich.";
              }

              $groesse=getimagesize('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
              $breite=$groesse[0];
              $hoehe=$groesse[1];
              $typ=$groesse[2];

              $hoehe2=$hoehe*96/$breite;
              $image1 imagecreatetruecolor(96,$hoehe2);
              switch (
              $typ)
              {
              case 
              1:
              $image imagecreatefromgif('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
              break;
              case 
              2:
              $image imagecreatefromjpeg('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
              break;
              case 
              3:
              $image imagecreatefrompng('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
              break;
              case 
              4:
              $image imagecreatefromwbmp('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
              break;
              default: 
              $gestorben="ja";
              }
              imagecopyresized($image1$image0,00,0,96,$hoehe2,$breite,$hoehe);

              switch (
              $typ)
              {
              case 
              1:
              imagegif($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
              break;
              case 
              2:
              imagejpeg($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname,100);
              break;
              case 
              3:
              imagepng($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
              break;
              case 
              4:
              imagewbmp($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
              break;
              default: 
              $gestorben="ja";
              }

              ?>

              Kommentar


              • #8
                Bitte Regeln lesen, und Code umbrechen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X