Kategorie-Archiv: PHP

Fehlerbehandlung in Extbase-Plugins

HTTP-Statuscodes nutzen und (kritische) Fehler anwenderfreundlich ausgeben

TYPO3 erlaubt es einem auf einfache Art und Weise einzustellen, wie auf nicht gefundene und nicht verfügbare Seiten reagiert wird. So lässt sich im TYPO3 Install-Tool beispielsweise mit der Option pageUnavailable_handling der HTTP-Header einstellen, der im Fall einer nicht gefundenen Seite an den Client geschickt wird. Mit der Option pageNotFound_handling ist es zudem möglich, den Benutzer auf eine beliebige Seite umzuleiten, den Inhalt einer Datei auszugeben oder gar eigenen Code auszuführen, wenn eine Seite nicht gefunden wird.
Auf diese bereits bestehenden Funktionen kann man auch in einer Extbase-Extension zurückgreifen, um im Fehlerfall ansprechende Fehlerseiten und -Meldungen auszugeben. Weiterlesen

TYPO3 HTML save cropping

Meistens reicht die Methode tslib_cObj::crop vollkommen aus, um Texte – etwa für eine Listenansicht – zu kürzen. Wenn jedoch RTE formatierte Texte im Spiel sind und die Formatierung in der gekürzten Version beibehalten werden soll, ist es reine Glückssache, kein invalides (X)HTML durch nicht geschlossene bzw. “verkrüppelte” Tags zu generieren. Abhilfe schafft die folgende crop-Methode, die eine Portierung der Javascript-Version von Steven Levithan darstellt.
Weiterlesen

suPHP und PHP Opcode Caches

Eigentlich ist suPHP eine nette Sache. Das Apache Modul mod_suphp sorgt in Kombination mit einem SetUID Binary dafür, dass PHP-Skripte mit den Berechtigungen des Benutzers, dem sie gehören, ausgeführt werden. Damit das funktioniert muss man in Binär-Distributionen wie etwa Debian Linux nicht mehr tun, als dass Modul zu installieren, einen Blick auf dessen Konfiguration zu werfen und es anschließend zu aktivieren. Vielleicht ist es gerade diese Einfachheit (deren Preis die Starrheit ist), die es so beliebt macht.

Ein großes Problem tut sich aber dann auf, wenn man PHP-Caches wie APC, TurckMM oder eAccelerator verwenden möchte. Denn all diese Caches funktionieren nicht im Zusammenspiel mit suPHP. Zwar lässt sich eine solche Kombination verwenden, doch ist sie leider nutzlos, da nichts gecached wird.
Weiterlesen

PHP: Bit Flags

In manchen Fällen können Bit Flags in PHP-Skripten sehr nützlich sein. Etwa wenn es darum geht,
anhand eines “action”-Parameters zu entscheiden, welche Objekte instanziiert werden sollen. U.a. auf diese Weise kann
- sonst redundanter – Code gesparrt werden.
Weiterlesen

Module ‘json’ already loaded in Unknown on line 0

Mir sind gerade fast die Augen rausgefallen als ich bei einem Blick ins Error-Log des Apache Webservers unter Debian Etch abertausende Zeilen mit der Fehlermeldung "PHP Warning: Module ‘json’ already loaded in Unknown on line 0" sah. Jeder Seitenaufruf erzeugte diesen Fehler. Die installierten Pakete (php5-cgi + Module sowie apache2 + Module) entstammen dem offiziellen Debian Etch Repository, das Problem betrifft also wahrscheinlich auch noch viele weitere Systeme, bei denen nicht ständig ins Error-Log geschaut wird. Wahrscheinlich wird beim Start des php-cgi Prozesses noch eine andere Konfigurationsdatei als /etc/php5/cgi/php.ini, mit der Anweisung das Modul zu laden, ausgelesen.

Beheben lässt sich das Problem durch das Editieren von /etc/php5/cgi/php.ini. Dort die Zeile, die das json-Modul lädt, einfach auskommentieren und den Apache neustarten.