Unser Entwicklungsrechner lief hier lange unter Ubuntu 14.10 LTS, aber nach dem jetzt Ubuntu 15.04 da war, haben wir uns doch mal entschlossen, ein Update zu fahren, in der Hoffnung dadurch ein paar Probleme loszuwerden, die wir hatten. (Und ich wollte mal sehen, wie sich Systemd macht…). Abgesehen von einem kleinen Stromausfall während des Updates und darauf folgender Reparatur auf der Textkonsole (bei Windows wäre ein Neuinstallation nötig gewesen!), lief auch alles gut.
Was leider nicht mehr wollte, war Xdebug. Ohne Debugger liefen die PHP-Skripte perfekt, aber wenn man sie debuggte, wurde komischerweise teilweise Variablen nicht angezeigt und es kam zu sehr unerklärlichen Exceptions, gefolgt von einer tollen Meldung im Apache Log:
[core:notice] [pid 13686] AH00052: child pid 14595 exit signal Segmentation fault (11)
Darauf hin war der Prozess dann hin, und man musste Apache neu starten. Das ganze war natürlich extrem nervig, speziell weil ja ohne Debugger alles funktionierte… Auch ganz einfache Skripte liefen mit Debugger, nur bei einer CakePHP-Anwenung gab es Probleme.
Die Lösung: In der php.ini opcache.enabled = 0 setzen!
Die Zeile ist schon da, aber auskommentiert, wodurch der Cache aktiv ist. Laut Dokumentation soll der Cache keine Probleme machen, wenn man ihn denn vor Xdebug aktiviert, was eigentlich auch passiert. Aber beim entwickeln will man eigentlich eh keinen Cache haben, von daher hab ich ihn einfach komplett ausgeschaltet, und schon funktionierte es wieder! Muss man erst Mal drauf kommen…
Ich bevorzuge es, Codelobster IDE dafür zu verwenden: http://www.codelobsteride.com