Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler bei getimagesize()

Einklappen

Neue Werbung 2019

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

  • Fehler bei getimagesize()

    Hallo Leute, ich hab seit langem mal wieder ein Problem.
    Und zwar habe ich eine Datenbank, wo die Pfade zu Bilder liegen. Diese gebe ich auf der Website aus. Das habe ich bis jetzt immer so gemacht, was auch super funktioniert hat:
    PHP-Code:
    $picurl //Datenbankabfrage die die url zurückliefert
    echo "<img src='".$picurl."'>"
    Jetzt wollte ich aber das Bild je nachdem ob es hochkant oder breitkant ist in der Höhe bzw. breite Prozentual verkleinern.
    PHP-Code:
    $picinfo getimagesize($picurl); //Hier tritt der Fehler auf
    $width $picinfo[0];
    $height $picinfo[1];
    if (
    $width $height)
    {
    echo 
    "<img width='60%' src='".$picurl."'>";
    }
    else
    {
    echo 
    "<img height='60%' src='".$picurl."'>";

    leider gibt mir PHP die Fehlermeldung aus, dass ein Bild benötigt wird, bzw der Pfad. Nun ist der aber korrekt. (Wenn ich echo $picurl; ausführ gibt er mir "../images/image.jpg" aus, was der richtige Pfad ist und wie gesagt auch bei dem <img> Tag als src Parameter funktionier. Was mach ich falsch?

    (Ich habe den Code aus der Erinnerung geschrieben, da ich ihn derzeit nicht vor mir habe, aber hab gestern ziemlich lange rumprobiert, sodass ich mir recht sicher bin dass er ziemlich genau so war.)

    Vielen Dank im Vorraus für Hinweise

  • #2
    Das kommt ganz drauf an wie dein Pfad aussieht. Im HTML wird der Pfad benötigt von dem aus der Browser darauf kommt, in PHP musst du bei relativen Pfaden vom Pfad der aktuellen Datei ausgehen.

    EDIT:

    Ein Beispiel:

    Bild liegt in public/images/bild.png, PHP-Script liegt in public/scripts/show.php , der hinterlegte Pfad ist /images/bild.png. Damit kommt der Browser zurecht, das der führende / für den Browser heisst er soll auf xy.de/ suchen, also "ganz unten" von dem was der Browser bekomen darf beginnen. Das PHP Script würde aber mit dem führenden / auf der untersten ebene des Servers-Dateisystems suchen. Hier wäre also fürs PHP-Script ../images/bild.png richtig, also kein führender / (also nicht von ganz unten anfangen) und mit .. einen Ordner höher anfangen (in dem Fall "public"), also "scripts" verlassen. Siehe auch absolute Pfade in URLs und relative Pfade in URLs und Pfade im Dateisystem

    Kommentar


    • #3
      Ein simples file_exists() wird dir sagen, ob die Datei existiert.
      Mit realpath() kannst du einen relativen Pfad zu einem absoluten auflösen, was weitere Fragen beantworten wird.
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Dann wäre ja aber der Pfad "../images/image.jpg" so wie es bei mir der Fall ist doch richtig oder?
        Ich hab einen Projektordner mit den Ordner "images" und "docs" und in docs liegt die php Datei die ausgeführt wir und der Pfad der in $picurl gespeichert ist, ist "../images/image.jpg"

        Kommentar


        • #5
          Okay vielen Dank lstegelitz, das werde ich sobald ich zu Hause bin mal ausprobieren!

          Kommentar


          • #6
            Dann wäre ja aber der Pfad "../images/image.jpg" so wie es bei mir der Fall ist doch richtig oder?
            Ein relativer Pfad ist immer nur von einer ganz bestimmten Position aus gültig. Deine Frage kann man also nicht beantworten ohne die Verzeichnisstruktur und den derzeitigen "Aufenthaltsort" zu kennen.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von Navader Beitrag anzeigen
              Dann wäre ja aber der Pfad "../images/image.jpg" so wie es bei mir der Fall ist doch richtig oder?
              Ich hab einen Projektordner mit den Ordner "images" und "docs" und in docs liegt die php Datei die ausgeführt wir und der Pfad der in $picurl gespeichert ist, ist "../images/image.jpg"
              Das kommt darauf an ob das Arbeitsverzeichnis von deinem Script irgendwo geändert wird oder dein Script included wird zum beispiel. Aber was lstegelitz geschrieben hat und evtl. ein echo [MAN]getcwd[/MAN](); wird dir darüber Auskunft geben.

              Kommentar


              • #8
                Naja die Struktur hab ich ja in dem Satz darunter beschrieben, aber hier verbildlicht:

                Projektordner
                ->images
                ->->image.jpg
                ->docs
                ->->Skript.php (referenziert über ../images/image.jpg)

                Bin mir ziemlich sicher das die Referenzierung richtig ist. Ich habe das Gefühl, dass es vielleicht an dem Variablenformat liegt, welches die Funktion getimagesize() übergeben bekommt. Die url wird ja aus einer Datenbank ermittelt. Aber wie gesagt, wenn ich die Variable ausgebe kommt der richtige Pfad...

                EDIT: Okay hast es selber gelesen. Das Skript wird direkt aufgerufen, also nicht per include. Aber ja ich werde sobald ich kann, die anderen Funktionen mal ausführen und testen, was sie ausgeben. Danke schonmal.

                Kommentar

                Lädt...
                X