Apache2.0 zeigt Bilder von gelinkten Verzeichnissen anderer Partition/ramdisk nicht

H

Harry2o

Grünschnabel
Hallo,
da ich wirklich nicht weiß, was eigentlich das grundlegende Problem ist, schildere ich einfach kurz die Situation.

Apache 2.0.54 mit PHP-4.3.10 zeigt keine Bilder an, die einer Ramdisk liegen. Andere Dateitypen funktionieren jedoch wunderbar.
In einem Verzeichnis html/ gibt es einen Ordner pics/ welches eine 50MB große Ramdisk ist (mount tmpfs -t tmpfs -o size=50M pics). Möchte ich nun html/pics/picture.png anzeigen, bekomme ich vom Server die URL selber wieder angezeigt - wget liefert "picture.png has sprung into existence" und in der access.log(!) steht, dass das Bild mit HTTP Code 206 geliefert wurde. Rufe ich jedoch eine HTML-Datei html/pics/test.html auf, wird diese ganz normal richtig dargestellt. (Ein eingebundenes img (src="./picture.png) bleibt btw leer )
Liegt dasselbe Bild z.B. in html/ (also echt auf der Platte), wird html/picture.png ganz normal angezeigt.

Ich hatte zuerst den Verdacht, es läge daran, dass pics/ ursprünglich ein Symlink auf /dev/shm war. Aber, erstens ist FollowSymLinks an, zweitens funktioniert ja die test.html. Dann dachte ich, es läge an der entfernten logischen Partition (/dev/shm); aber auch Fehlanzeige, da eine direkt in dem Verzeichnis angelegte Ramdisk dasselbe Problem zeigt.
Dass .html funktioniert, aber .png (und .bmp) nicht, lässt auf ein Problem mit Filetypen - innerhalb Ramdisks (oder unter welchen Umständen auch immer) - schließen.
Ein htaccess "AddHandler image .png" ändert nichts. (Interessant jedoch, dass "AddHandler php-script .png" den Inhalt zeichenweise zurückgibt; semantisch Schwachsinn, ich weiß, aber interessant bzgl der Filetypenthese).

Ja .. was gibt's sonst noch zu sagen? Das sind vorerst die Fakten.
Achja, unter Apache 2.2.3 funktioniert es wie gewünscht - keine Probleme beim Anzeigen irgendwelcher Dateitypen auf Ramdisks. Hilft mir aber nichts, es muss unter 2.0 laufen. Die Konfigurationsdateien unterscheiden sich nur unwesentlich, und nicht in Punkten, die damit irgendwie in Zusammenhang zu bringen seien.

[edit]OS ist debian mit 2.4er kernel; und die Zugriffsrechte aller Dateien sind gleich, nämlich rw-r-r [/edit]

Hat irgendjemand eine Idee?
~Harry


[edit2] Mittlerweile hab' ich auch versucht, die Dateien www-data zu geben. Außerdem die Ramdisk ALS www-data gemountet und www-data die Rechte an den gemounteten Daten verschafft (kann man in der /etc/fstab eintragen, dass www-data auch mounten darf). Alles beim Alten, bei den Bildern ist weiterhin nur die URL selber als Text sichtbar! [/edit2]
 
Zuletzt bearbeitet:
Nach längerem Suchen und Ausprobieren bin ich, glaub' ich, auf die "Lösung" des Problems gekommen.

Die Standard-Ramdisk /dev/shm und die von mir verwendete Ramdisk verwenden den Filesystemtyp "tmpfs". Damit scheint nun der Apache in Version 2.0.x ein Problem zu haben, wenn auf diesem "Filesystem" Bilder liegen.

Ein Workaround ist nun, ein /dev/ramX Device mit ext2 zu formatieren und zu mounten. (Wehrmutstropfen hier natürlich, dass man nun die (maximale) Größe nicht mehr ganz frei bestimmen kann, sondern diese (also die Größe der /dev/ramX devices) beim Systemstart festgelegt werden. Man muss also die Bootloader-Config ändern).

Vorgang:
Wenn die Standardgröße von /dev/ramX mit 4MB zu klein ist, in grub und lilo ähnlich:
In /etc/grub.conf oder /boot/grub/menu.lst in der Kernelzeile:
title Ubuntu, kernel 2.6.20-16-generic
root (hd0,6)
kernel /boot/vmlinuz-2.6.20-16-generic [...] ramdisk_size=50000
initrd /boot/initrd.img-2.6.20-16-generic​
Die Größe ist dabei die Blockanzahl, wobei die Ramdisk auch schon ein wenig Platz beim Erstellen belegt.

Das Device formatieren:
$ mkfs -t ext2 /dev/ram0

Und mit neuem Filesystem mounten:
$ mount /dev/ram0 -t ext2 /html/pics
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Apache 2: Permission denied - exec failed bei bildern

Ablösen von Exchange2k3, OWA und W2k3 AD

Server-Monitoring mit RRDTool

Zurück
Oben