Apache mit Text aber ohne Bilder

  • Servus,

    irgendwie bekomme ich es einfach nicht zum laufen, daher hier mal mein erster Versuch mit einem Forum und nem eigenen Beitrag.

    Ich haben einen Raspi4 Apache zum Laufen bekommen und versuche jetzt auf ein über fstab mounted QNAP per cifs zuzugreifen. Unter /var/www/webdev2 hab ich ein Verzeichnis welches auf ein /media/webdev2 linked. Ich bekomme per Browserzugriff die Zielseite angezeigt, allerdings wird mir bei einem direkten Zugriff kein Bild dargestellt, Text und PHP Inhalt kommen sauber rüber.

    Wenn ich eine htmldatei test.html anlege wird der Text angezeigt aber das Bild nicht

    <html>

    <head>

    <title>Insert title here</title>

    </head>

    <body>

    testext

    <img src="logo.jpg">

    </body>

    </html>

    Wenn ich eine PHP Datei testphp.php anlege die das Bild mit einem Text versieht dann wird es auch angezeigt

    <?php

    header ("Content-type: image/png");

    $mein_bild = imagecreatefromjpeg("logo.jpg"); // Bild für Hintergrund

    $schwarz = ImageColorAllocate ($mein_bild, 0,0,0); // Farbe der Schrift festlegen

    $gross = "2"; // Schriftgröße

    $randl = "3"; // Ausrichtung von Links

    $rando = "3"; // Ausrichtung von Obén

    $t1 = "Dies ist ein Test"; // Text der Angezeigt werden soll

    ImageString ($mein_bild, $gross, $randl, $rando, "$t1", $schwarz);

    imagejpeg ($mein_bild);

    ?>

    Beide Files und die logo.jpg liegen direkt unter /media/webdev2

    in dem Apache2 Log kommt kein Fehler man sieht nur sauber den Aufruf

    ==> /var/log/apache2/access.log <==

    XX.XX.XX.XXX - - [14/Nov/2020:19:49:45 +0100] "GET /webdev2/test.html HTTP/1.1" 200 445 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"

    XX.XX.XX.XXX - - [14/Nov/2020:19:49:45 +0100] "GET /webdev2/logo.jpg HTTP/1.1" 200 78840 "http://XX.XX.XX.XXX/webdev2/test.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"

    XX.XX.XX.XXX - - [14/Nov/2020:19:49:58 +0100] "GET /webdev2/testphp.php HTTP/1.1" 200 26037 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"

    Irgendwie gehen mir die Ideen aus warum die Bilder nicht angezeigt werden, wenn es am Zugriff liegen sollte dann dürfte ja gar nichts kommen denke ich

    Wenn ich die gleiche Konstellation über meinen alten Raspi2 aufrufe dann klappt alles, der fstab mount unterscheidet sich nur durch die Angabe der Version

    //http://XX.XX.XX.XXX/webdev2 /media/webdev2 cifs vers=1.0,sec=ntlmssp,defaults,rw,username=XXXXXX,password=XXXXXX,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,iocharset=utf8 0 0


    Hat jemand eine Idee woran das liegen könnte oder hatte sowas schonmal?

    Viele Grüße

    Mike

  • Mal einen anderen Browser ausprobiert? Was passiert wenn Du das Bild direkt abrufst? Was passiert wenn Du das Bild mit `wget`/`curl`/`httpie` abrufst?

    Frage am Rande: Sendet das PHP tatsächlich "image/png" als Content-Type und dann ein Bild im JPEG-Format?

    ja sowohl Chrome als auch Firefox, per wget lässt es sich vom Raspi ziehen und die Größe entspricht der im Filesystem

    Connecting to XX.XX.XX.XXX:80... connected.

    HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9

    Length: unspecified

    Saving to: ‘logo.jpg’

  • ja sowohl Chrome als auch Firefox, per wget lässt es sich vom Raspi ziehen und die Größe entspricht der im Filesystem

    Connecting to XX.XX.XX.XXX:80... connected.

    HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9

    Length: unspecified

    Saving to: ‘logo.jpg’

    Und ist es auch ein Bild und lässt es sich betrachten?

  • muss da nicht der absolute Pfad drin stehen ? also /webdev2/logo.jpg ?

    Nein. Relative Pfade werden relativ zum Pfad er gerade dargestellten Seite aufgelöst. Und erst recht hat lokale Pfade der Datei nichts in der src URI zu tun. Wenn das ginge, würde man per Browser das gesamte Filesystem abgrasen können.

  • Und ist es auch ein Bild und lässt es sich betrachten?

    guter Hinweis, hab es an andere Stelle rüber geschoben und das normale Fototool im Windows hat ein Thema das es den Filetyp nicht erkennt, Photoshop macht es sauber auf. Wenn man die Datein im Ultraedit aufmacht wundert mich das fehlende A in der ersten Zeile

    pache/2.4.38 (Raspbian)

    Last-Modified: Sat, 14 Nov 2020 11:36:00 GMT

    ETag: "1c508-5b40f8c9bb0e0"

    Accept-Ranges: bytes

    Content-Length: 115976

    Keep-Alive: timeout=5, max=100

    Connection: Keep-Alive

    Content-Type: image/jpeg

  • In der Datei sollte doch nicht der HTTP-Header stehen. Das sollte einfach ein JPEG sein, dass genauso sein muss, wie das auf dem PI (oder der NAS). Wenn da ein Unterschied ist, dann ist das die Ursache.

  • stimmt ist eigentlich logisch, hab zur Sicherheit nochmal über den Raspi per hexedit verglichen und die sind unterschiedlich. Ist nur die Frage dann kann ja eigentlich nur der Apache das umgeschrieben haben, aber an welcher Stelle kann man so ein Verhalten beeinflussen?

  • In einer HTML-Datei wrid immer der Pfad relativ zum Document-Root angezeigt.

    In PHP ist es immer der Pfand relativ zum Server-Root.

    $mein_bild = imagecreatefromjpeg("logo.jpg"); /

    liegt das Document-Root des Webservers unter /var/server/html, und innerhalb dieses Verzeicnisses eine Bilddatei unter "/images/vorlage/bild.jpg", dann wird diese Datei auf der HTML-Seite mit "/images/vorlage/bild.jpg" als Verzeicnis im Broser aufgerufen.

    Wird sie in PHP wie im Zitat angesprochen, so müsst dort entweder ein relativer Pfad zur Webseite (./....) genommen werden, oder es müsste so dort stehen:

    Code
    imagecreatefromjpeg("/var/server/html/images/vorlage/bild.jp");

    Wenn der Pfad automatisch angepasst werden sollte, wäre eine Funktion bracuhbar, die den relativen Pfad zur Document-Roor zur Server-Root berechnet und diesen Teil dann zum Absoluten Pfad der Datei zusammenbaut.

    Computer ..... grrrrrr

  • stimmt ist eigentlich logisch, hab zur Sicherheit nochmal über den Raspi per hexedit verglichen und die sind unterschiedlich. Ist nur die Frage dann kann ja eigentlich nur der Apache das umgeschrieben haben, aber an welcher Stelle kann man so ein Verhalten beeinflussen?

    Ist das ein dynamisch erzeugtes Bild? Durch das PHP? Dann liegt das an PHP. Oder passiert das auch bei statischen JPEGs? Und auch nochmal auf den Content-Typ achten, du musst auch schon ein png liefern, nicht aus versehen ein JPEG.

  • Wenn man ein Image über PHP erzeugt dann funktioniert alles. Aber es sollte bei einer simplen HTML Seite auch funktioniere es ist eine echte simple jpg Datei und wenn man das ganze dann über den Browser aufruft wird diese über den Raspi4 als Type octet-stream erkannt und wenn man das gleiche Beispiel über den Raspi2 lädt dann passt alles, das gemountede NAS ist das gleiche.

    ich hab das file jetzt mal in den /var/www/html gelegt und in die default inde.html eingearbeitet dann klappt die Erkennung als jpg aber sobald ich an der Stelle über den verlinkten Mount gehe dann wird es wieder zum octet-stream.

    Wenn man aber von beiden Wegen per hexedit auf das File schaut dann ist es jeweils eine jpg Datei, somit sollte der Apache was korrektes zum Ausliefern bekommen, scheint aber damit irgendwas anzustellen

  • eh super zwar irgendwie komisch aber dein Ansatz war perfekt. Danke

    ich musste aber beides ergänzen, nur sendfile war nicht ausreichend

    EnableMMAP off

    EnableSendfile Off

    damit der nächste weniger suchen muss, hab jetzt in /etc/apache2/sites-enabled/default.conf folgendes Setting was läuft

    <Directory /var/www/webdev2>

    Require all granted

    Options Indexes FollowSymLinks MultiViews

    AllowOverride All

    Order allow,deny

    allow from all

    EnableMMAP off

    EnableSendfile Off

    </Directory>

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!