PHP PCRE-Erweiterung für Contao/TYPOlight
von Robert Scheck (Kommentare: 0)
Für die Suchmaschinen-Funktionalität des Contao Open Source CMS (vormals TYPOlight) wird die Unicode-Unterstützung der PCRE-Erweiterung in PHP benötigt. Ist diese Unicode-Unterstützung nicht gegeben, so schlägt eine Suche anschließend mit
Compilation failed: support for \P, \p, and \X has not been compiled
fehl. Bei Red Hat Enterprise Linux 5 und damit bei CentOS 5 ist diese Option standardmäßig nicht aktiviert, da der Einsatz erst in späteren Versionen von PCRE durch die Entwickler empfohlen worden ist. Man kann dieses Problem lösen, indem man PCRE beim Kompilieren um das Parameter --enable-unicode-properties
erweitert, sofern PHP dynamisch gegen die PCRE-Bibliothek gelinkt ist (was bei RHEL 5 und CentOS 5 der Fall ist).
Da PCRE gelegentlich Sicherheitslücken aufweist, sollte man die Bibliothek jedoch nicht von Hand kompilieren, da sonst mögliche Sicherheitsupdates von Red Hat dies überschreiben bzw. je nach Pfad bleiben später eventuell die Sicherheitslücken von PCRE aus der eigenen Übersetzung der Bibliothek vorhanden und machen das System leicht verwundbar. Der richtige Weg ist es daher, das RPM-Paket mit der richtigen Option selbst neu zu bauen und auch selbst zu pflegen.
Um dies zu vereinfachen, haben wir unser ETES-Repository mit einem angepassten RPM-Paket der PCRE-Bibliothek erweitert; dort wurde der Parameter --enable-unicode-properties
beim Kompilieren verwendet. Diese Aktualisierung ist in unserem
ETES-Repository für die für den Unternehmenseinsatz optimierte
Linux-Distribution Red Hat Enterprise Linux bzw. CentOS in Version 5 verfügbar.
Aktiviert wird das ETES-Repository durch die Installation des RPM-Pakets etes-release (rpm -Uvh etes-release-version.arch.rpm
), welches sich im entsprechenden Unterverzeichnis, also z.B. /centos/5/i386/ für CentOS 5 mit 32 Bit oder /centos/5/x86_64/
für CentOS 5 mit 64 Bit, der oben angegebenen Adresse findet. Da sich
die Paketnamen ändern können, ist hier bewusst keine direkte URL zu den
RPM-Paketen verlinkt. Ist das ETES-Repository aktiviert, funktioniert
die Aktualisierung wie folgt:
yum update pcre
service httpd restart
Der Neustart des Apache Webservers wird benötigt, damit die PHP-Umgebung mit den zugehörigen Bibliotheken neu in den Speicher geladen wird. Anschließend kann die Suchmaschinen-Funktionalität von Contao (vormals TYPOlight) ohne Fehlermeldungen verwendet werden.
Red Hat behandelt dieses Problem aktuell im Bugreport 457064 und schätzt, dass dieses Problem möglicherweise für Red Hat Enterprise Linux 5.4 (und damit auch CentOS 5.4) beseitigt werden kann...