Bilder, die über php aufgerufen werden, werden nicht angezeigt?

Danny

Registered User
Ich habe einen StratoServer mit Linux 9.0, Confix3 Pro, Apache 2.054, Php4.4.0, GD 2.0.28

Bin absoluter Neuling in Sachen Server und brauche dringend Hilfe:

Seit diesem Server werden meine Bilder, die per php aufgerufen werden, nicht mehr angezeigt. Ich habe zum Beispiel 4Images, eine Bildergalerie, wenn ich meine Signatur in meinem Forum anzeigen lassen will, die über img src und domain/signature.php aufgerufen wird, wird mir das jpg nicht mehr angezeigt, nur ein rotes Kreuz.

Kann mir da jemand helfen?
Was muss man am Server wo einstellen, dass Bilder, die über php aufgerufen werden, angezeigt werden?

Danke Euch.
Gruß Danny
 
Hallo!
Zwei dinge die mir spontan einfallen:
- Stimmt der Pfad zu den Bildern?
- Stimmen die Berechtigungen?

mfG
Thorsten
 
Auf SUSE 9.0 VSERVERn gab es oft ein spezifisches Problem, dass Bilder nicht angezeigt wurden. Die Fehlermeldung in den Log-Dateien lautet in etwa "The image could not be displayed because it contains errors", obwohl die Bilder einwandfrei waren.

Die folgenden Apache-Einstellungen beheben diesen Fehler (z.B. durch Einfügen in die Datei /etc/apache2/httpd.conf.local, Pfade ggf. anpassen).

Code:
# eliminates the error: "The image <image> cannot be displayed, because it contains errors.
# see: http://httpd.apache.org/docs-2.0/mod/core.html#enablesendfile
#
EnableSendfile Off

# for the above error (image contains errors), sometimes you also
# need to disable MMAP; in our case, disabling it has no effect
# on the "image contains errors" problem, but the Apache documentation
# says disabling it might improve performance on some multiprocessor
# systems; so we give it a try
#
# see: http://httpd.apache.org/docs-2.0/mod/core.html#enablemmap
EnableMMAP Off
 
Hallöchen, es geht nicht um Bilder allgemein, diese werden angezeigt wie immer. Es geht um Bilder, die über eine php-Datei angezeigt werden wollen.

Der Link zum Bild ist nicht ...jpg, sondern zB ...show.php=go&media_id=386

Irgendwo muss ein mimetyp noch nicht eingetragen sein, der Bilder über php anzeigen lässt. In der httpd.conf find ich dazu nichts, wie ich schon woanders gelesen habe.

Es gibt noch eine Datei für mime types.

Vielleicht kann mir da noch jemand helfen ;) ?
 
Hast Du Fehlermeldungen im error_log?
Wird der richtige Header gesetzt? (sollte PHP machen)
Sollen diese Bilder erzeugt werden oder einfach nur von Platte durchgereicht?

huschi.
 
Hallöchen Huschi,

also ich habe auf meiner Seite eine 4images Galerie. Dort gibt es ein Plugin, was ein Signaturbanner anzeigt (jpg) Auf diesem Banner werden dann immer aktuelle User online oder auch die Anzahl der Bilder in der Bildergalerie angezeigt.
Das Banner wird als img src Befehl aber mit Url signature.php eingebunden.
Angezeigt sollte dann ein jpg werden.
Es erscheint jedoch nur ein rotes Kreuz?

Hoffe, mir kann noch jemand helfen. Leider habe ich noch nicht sehr viel Erfahrung mit Linux.

Ich danke Euch für jede Hilfe.

@Huschi: leider habe ich keine Ahnung, wo der errorlog liegt bzw. wo ich sehe, welcher header gesetzt ist.

Liebe Grüße Danny
 
Hallo!
Danny said:
Das Banner wird als img src Befehl aber mit Url signature.php eingebunden.
Angezeigt sollte dann ein jpg werden.
Es erscheint jedoch nur ein rotes Kreuz?

Was passiert denn, wenn Du den Bild-URL direkt in der Browser-Adresszeile eingibst? Gibts dann eine PHP-Fehlermeldung zu sehen?

Den MIME-Type gibt man im PHP-Script an, welches das Bild "rausschickt". Dein PHP-Script sieht wohl so aus:

PHP:
<?php
$dateiname = "/home/1/bilder/bild.gif";

$type = strtolower(substr($dateiname, -3));
switch($type) {
 case 'jpg':
  header("Content-type: image/jpeg");
  break;
 case 'gif':
  header("Content-type: image/gif");
  break;
 case 'png':
  header("Content-type: image/png");
  break;
 default:
  header("Content-type: application/octet-stream");
  break;
}

readfile($dateiname);

?>

oder etwas eleganter:

PHP:
<?php
$dateiname = "/home/1/bilder/bild.gif";

$type = getimagesize($dateiname);
switch($type[2]) {
 case '1':
  header("Content-type: image/gif");
  break;
 case '2':
  header("Content-type: image/jpeg");
  break;
 case '3':
  header("Content-type: image/png");
  break;
 default:
  header("Content-type: application/octet-stream");
  break;
}

readfile($dateiname);

?>
 
Last edited by a moderator:
Back
Top