Typo3: Bilder werden nicht angezeigt

Bug: Typo3 hat Probleme mit suPHP

Typo3

Ich hatte gerade das Problem, dass die im Typo3 Backend, hochgeladenen Bilder zwar auf den Server übertragen, aber nicht angezeigt werden.

Grund dafür war, dass die generierten Kopien der Bilder die Berechtigung “0600” hatten, d.h. sie konnten nach dem Generieren nicht mehr gelesen werden. Da ich suPHP laufen habe und die Skripte mit den jeweiligen Benutzern ausgeführt werden, war der Besitzer der Datei der User und der www-user konnte diese dann nicht lesen.

Das Problem kann aber mit ein paar extra Zeilen Code schnell behoben werden:

Die Skripte die Dateien generieren findet man im “typo3/sysext/cms/tslib/” Ordner. Meines Wissens sind das:

  1. class.tslib_menu.php
  2. class.tslib_gifbuilder.php
  3. class.tx_install.php

Jedesmal wenn eine Datei geschrieben wurde, fügt man danach einfach diese Zeile ein:

t3lib_div::fixPermissions($file);

Dann sollte es wieder funktionieren. In Typo3 wurde dieser Bug bis zur gerade aktuellen Version 4.1.1 scheinbar noch nicht behoben.

2 Kommentare “Typo3: Bilder werden nicht angezeigt

  1. Habe eine bessere Lösung (IMHO) gefunden:

    Anstelle Typo3 zu patchen besser die suphp.conf des Servers ändern bzw. vom Provider ändern lassen.

    Darin steht nämlich meist:

    ;Umask to set, specify in octal notation
    umask=0077

    Dies bewirkt, daß Dateien mit 0600 und Verzeichnisse mit 0700 unter der UserID des Benutzers (und damit des PHP-Scripts) angelegt werden, was den Webserver hindert, mit PHP angelegte Dateien an den Browser auszuliefern, da er selbst nicht dran darf (er läuft i.d.R. mit einer anderen UserID).

    Besser ist diese Einstellung:

    ;Umask to set, specify in octal notation
    umask=0022

    Mit dieser Einstellung werden Dateien mit 0644 und Verzeichnisse mit 0755 angelegt, somit kann der Inhaber der Datei oder des Verzeichnisses (UserID, mit der auch PHP-Skripte ausgeführt werden) zugreifen und zusätzlich der Webserver (oft UserID “www”, “wwwrun” oder “apache”) lesend zugreifen (nur lesend!).

    Und prompt funktioniert es mit allen (neu angelegten) Bildern! Ggf. alte Bilder auf typo3temp löschen, damit sie neu generiert werden.

    Gruß

    Mark

  2. Danke für den Tip

    Für den GifBuilder :

    [329] : t3lib_div::fixPermissions($gifFileName);

    dann gehts wieder

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.