Nun steht er der Blog. Hätte eigentlich schon viel früher passieren sollen, eigentlich nur kurz aptitude angeworfen und die neusten Updates eingespielt. Doch seit PHP 5.2 war das kein Vergnügen mehr - Segmentation Faults mehrten sich und die Kiste schmierte ab und zu ab.Â
Die error.log des Apachen zeigte, dass etwa 80% der Seitenaufrufe zu einem Segmentation Fault des Child Prozesses führen. Auch das manuelle ausführen via PHP CLI zeigte zwar fast die ganze Seite, endete jedoch immer mit einem Segmentation Fault. Irgendwas musste geschehen.Â
1. Versuch: Alternatives Repository
Erst dachte ich, es liegt an libapache2-mod-php5. Aber andere Versionen waren auf den normalen Zweigen auf die schnelle nicht zu finden. Ich habe daher mal die Pakete von dotdeb probiert. Aber irgendwie war das alles nichts. Sollte ich jetzt etwa auf immer und ewig alles selber kompilieren? PHP5, Apache, Mysql... Das würde irgendwie kein Ende nehmen.Â
2. Versuch: PHP5 via Fastcgi bzw. fcgid
Der zweite Versuch war dann auf das Apache Modul zu verzichten. CGI schien es erstmal zu tun, Suphp war gut dokumentiert, aber es bleibt halt ein CGI Modul. Dass heißt, dass bei jedem Seitenaufruf der PHP Interpreter gestartet werden muss, anstatt, dass ein dauernder Prozess läuft und die Aufträge entgegennimmt. Die Lösung heisst: FastCGI. Hier wird zwar auch PHP via CGI eingebunden, aber der Prozess muss nicht bei jedem Aufruf neu gestartet werden. Nur leider ist die Entwicklung hier irgendwie eingestellt worden. Das Nachfolgeprojekt heisst fcgid und wird von einem Chinesen weiterprogrammiert. Es ist bestimmt sehr gut und eine elementare Doku war auf der (sehr langsam zu erreichenden) Webseite auch vorhanden, aber für einen Neuling wie mich, war das ein Overkill. Da Rechte anpassen. Irgendwo stand im Internet man sollte noch was patchen... Nicht falsch verstehen, Webserver Security ist wichtig, aber es muss auch immer den Ansprüchen genügen.  Ich betreibe kein Hosting für Dritte, ich brauche kein Ausführen von Programmen für Benutzer die sich nicht sehen dürfen. Also beschloss ich diese Idee ersteinmal zurückzustellen, auch wenn mich das Konzept theoretisch überzeugt hat.
Des Pudels Kern
Die Lösung für mich war ein Snapshot des Pakets. Ich hatte bei meiner Recherche gesehen, dass PHP 5.2 einige Probleme verursachen kann. Eine Suche nach PHP5.2 "Segmentation fault (11)" brachte recht viele Treffer und ich hatte das Gefühl, dass es irgendwie daran liegen müsste. Schliesslich sind die Probleme immer erst mit den Updates gekommen. Da ich das Problem sowohl beim 32bit, wie auch beim 64bit Server beobachten konnte, war ein Zusammenhang mit den früher typischen AMD64 Bugs in Debian ausgeschlossen.
Edlich die Lösung: back to PHP 5.1
Ich habe om Debian Snapshot Server ein älteres PHP Paket eingespielt. Dazu muss man sich dort die passenden Einträge für die sources.list von apt heraussuchen. In meinem Fall waren das:
deb http://snapshot.debian.net/archive pool php5
deb-src http://snapshot.debian.net/archive pool php5
deb http://snapshot.debian.net/archive pool php-imap
deb-src http://snapshot.debian.net/archive pool php-imap
deb http://snapshot.debian.net/archive pool php-interbase
deb-src http://snapshot.debian.net/archive pool php-interbase
deb http://snapshot.debian.net/archive pool php-mcrypt
deb-src http://snapshot.debian.net/archive pool php-mcrypt
deb http://snapshot.debian.net/archive pool php-pspell
deb-src http://snapshot.debian.net/archive pool php-pspell
deb http://snapshot.debian.net/archive pool php5-tidy
deb-src http://snapshot.debian.net/archive pool php5-tidy
Schnell noch in Aptitude eine richtige Version ausgewählt, und seitdem schnurrt der Server wieder wie ein kleiner Jaguar. :)Â