ich wollte hier ein paar Tips zum Einsatz von Contenido unter dem neuen PHP 5.3 geben, da es in der Standardeinstellung aufgrund eines Bugs in 5.3.0 zu einem SIGSEGV des Webservers kommt. Da ich selbst zur Development-Crew von PHP gehöre und auch schon lange die uralte mysql-Extension entfernen würde, hier auch meine Vorschläge.
PHP 5.3 wird jetzt mit einem neuen Treiber für die Anbindung an die MySQL-Datenbank ausgeliefert. Dieser ändert prinzipiell nichts an der API für PHP Code, es wird allerdings aus Lizenzgründen und vor allem wegen besserer Integration in den PHP-Core ein eigener "MySQL-Treiber" benutzt, der hinter den Extensions mysql, mysqli und PDO_mysql liegt (siehe hierzu auch die Hilfe: http://www.php.net/manual/en/mysqli.mysqlnd.php). Es ist davon auszugehen, dass neue Pakete für Linux diese Extension benutzen, da sie um einiges schneller ist und automatisch persistente Verbindungen zu MySQL unterstützt. PHP-Code, der MySQL benutzt, verwendet wie bisher die drei extensions, wobei PDO oder mysqli zu bevorzugen ist.
Bei meinen Tests mit Contenido unter PHP 5.3.0 (ich habe leider während der RC-Phase, Contenido nicht mitgetestet), habe ich jedoch einen Bug in PHP 5.3.0 festegestellt, der den Webserver crashen lässt, wenn man sich mit Contenido im Backend einloggt. Grund für das ganze ist die Tatsache, das standardmässig Contenido immer noch die mysql-extension benutzt und nicht mysqli. Der entsprechende Bug und auch für die Developer von Contenido, wie man es direkt im Code umschiffen kann: http://bugs.php.net/bug.php?id=48745
Für alle User, die PHP 5.3 einsetzen wollen:
- Benutzt mysqlnd und installiert auch die mysqli extension von PHP
- Stellt in der config.php unter contenido/includes den Datenbanklayer von mysql auf mysqli (auch wenn drübersteht es ginge angeblich nur mit "mysql". Contenido liefert allerdings auch Support für mysqli aus.
- PHP 5.3 hat die Posix RegEx Funktionen deprecated (also ereg_irgendwas(), man soll jetzt die PERL regex umstellen und preg_irgendwas() benutzen. Contenido sollte das ändern. Solange das nicht geschieht, sollte man deprecation warnings ausschalten, dafür muss man das Error-Level mittels error_reporting() in contenido/includes/config.local.php eintragen oder error-reporting ganz ausmachen).