PHP-FPM chroot + Zend OpCache = Problem

In letzter Zeit hatte ich wirklich merkwürdige Probleme. Ich habe testweise einmal den Zend OpCache ausprobiert, der seit PHP 5.5.0 direkt mit im Bundle enthalten ist und war eigentlich ziemlich zufrieden. Der Speicherverbrauch bei der Ausführung von WordPress war auf 1/5 geschrumpft.

Allerdings haben sich nun ein paar Probleme gezeigt, bei denen ich noch nicht genau weiß, wie ich sie beheben soll. Der Hintergrund ist, dass ich die Webseite von calc.pw nun auf Basis von WordPress neu aufgesetzt habe. Da nun sowohl WeizenSpr.eu als auch calc.pw auf WordPress basierten und die gleichen Pfade verwendeten, entstanden merkwürdige Seiteneffekte.

So kam es vor, dass ich im Adminbereich von calc.pw eine Einstellung tätigen wollte und plötzlich auf der Loginseite des WeizenSpr.eu Adminbereichs landete oder dass mir im Browserfenster von WeizenSpr.eu per Popup das Loginfenster angeboten wurde, weil angeblich meine Session abgelaufen war.

Anfangs ging ich davon aus, dass evtl. Safari Probleme mit der Verwaltung der Cookies haben könnte, deshalb verwendete ich anschließend verschiedene Browser für beide Seiten - einmal Safari und einmal Firefox. Doch auch dieses Vorgehen half nichts. Erschwerend kam hinzu, dass calc.pw sporadisch gar nicht laden wollte und stattdessen eine leere Seite anzeigte - ohne auffällige Einträge im Errorlog.

Erst langsam kam mir der Gedanke, dass es am Zend OpCache liegen könnte. Die grundlegenden Einstellungen von WordPress (z.B. Datenbank-Zugänge, Session-Cookie-Schlüssel, korrekte URL der Webseite, etc.) lagern in einer PHP-Konfigurationsdatei ("wp-config.php"). Offenbar verwendete der Zend OpCache mal die richtige Datei und mal die völlig falsche Datei, was die kaputten Sessions und auch die Redirects zur anderen Webseite erklären würde.

Allerdings war ich davon ausgegangen, dass der Cache so intelligent sein würde, die korrekte Datei anhand des vollen Pfades zu erkennen... wenn... ja wenn ich nicht die chroot-Funktion von PHP-FPM verwenden würde. Relativ vom chroot-Heimverzeichnis aus gesehen waren die WordPress-Pfade natürlich komplett identisch. Offenbar hat der Zend OpCache in dieser Konstellation Probleme damit, die Dateien zu unterscheiden - ein Fakt, der ihn für mich derzeit absolut unbrauchbar macht.

Nach dem Deaktivieren des Caches und dem Neustarten von PHP-FPM funktionierten beide Seiten problemlos - die Sessions gingen nicht kaputt, ich erhielt keine fehlerhaften Redirects mehr und auch die sporadischen Totalausfälle von calc.pw verschwanden.

Die Frage, die sich jetzt nur stellt, ist, wann wohl jemand von PHP dieses Problem beheben wird. Solange das Problem nicht gelöst ist, werde ich den Cache nicht weiter einsetzen können. :-(

Ungecachte Grüße, Kenny