Typo3: Bilder werden nicht angezeigt

Freitag, 29. Juni 2007

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.

Popularity: 27% [?]

2 Kommentare »

Danke für den Tip

Für den GifBuilder :

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

dann gehts wieder

Kommentar by Daschmi

19. Juli 2007 @ 14:41

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

Kommentar by Mark

2. April 2008 @ 18:49

RSS Feed für Kommentare zu diesem Artikel. TrackBack URI

Hinterlasse einen Kommentar

XHTML: Sie können diese Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

blogCloud bloggerei.de supported by www.rankingcloud.de Gelistet im Blog Verzeichnis