So, Fehler gefunden, wobei nicht wirklich den Fehler, aber was es verursacht... Ob das ein Bug ist??? Jedenfalls ist PHP-FPM in Verbindung mit Apache-Proxy ganz schön giftig. Hier scheint nginx besser zu sein, denn dort gibt es zwei Direktiven für die Fehlerbehandlung, beim Apache nur eine und die verursacht das Problem....
Die persönliche eigene Fehlerseite, die ein Portal ausliefert, die kennt wohl jeder.... Um die bei FPM und Proxy zu aktivieren, also das ErrorDokument nutzbar zu machen, muss man die Direktive ProxyErrorOverride einschalten. Wenn die an ist, dann nutzt der Apache die unter ErrorDocument hinterlegte Datei und nicht einfach nur "File not found".
Nun gehen die Probleme aber los, denn wenn ProxyErrorOverride aktiviert ist, dann wird der Response-Body von PHP bei allen Header von 400 und höher, also auch bei 5xx, nicht mehr beachtet. Der erscheint einfach nicht. Es kommt entweder die Meldung aus dem ErrorDokument oder, wenn nicht vorhanden, die Standardmeldung vom Apache.
Es ist also nicht möglich, mit PHP einen Header 404 zu senden und einen Body dazu.
Braucht man das, und das brauchen viele Scripte, dann muss man ProxyErrorOverride deaktivieren (Ich denke mal, das ist auch der Grund, warum es per Default aus ist). Dann kommt auch wieder der Body von PHP mit auf den Schirm. Das Problem hier dann aber, wenn ProxyErrorOverride aus ist, dann wird das ErrorDokument nicht mehr beachtet. Bei irgendwelchen Aufrufen, wo die Datei dann nicht gefunden werden kann, oder ein Header >= 400 kommt, aber kein Body, kommt nicht mehr die personalisierte Standard-Fehlermeldung vom ErrorDokument, sondern "File not found".
Wie man es auch dreht und wendet, die Katze beißt sich in den Schwanz.
So, also muss man für bestimmte Files das ProxyErrorOverride deaktivieren (z.B. für den Page-Restrictor) und dennoch global an lassen, z.B. mit so einem Konstrukt
ProxyErrorOverride On
<Files "page.restrictor.php">
ProxyErrorOverride Off
</Files>
Dann gehen die globalen Fehlerseiten und der Restrictor kann seine eigene Fehlermeldung schicken. Fertig? Nein!
Es gibt ja auch noch andere Scripte, Funktionen und Klassen, die Fehlercodes und gleichzeitig Meldungen absetzen. Bei denen fehlen die Meldungen dann ja auch. Nur kann man die ja schlecht alle freigeben. Also muss man hier alles überarbeiten und die ganzen Error-Meldungen mit Status 400 oder größer in ein extra File als eigene Funktion auslagern und dieses dann inkluden und aufrufen, anstelle den Fehler "direkt vor Ort" zu erzeugen.
Dann sind alle Fehlerheader und Meldungen, also alles was was größergleich 400 erzeugt und einen eigenen Body sendet, in einem File und das kann man dann auch "freigeben"
<Files "error_funktionen_mit_eigenem_body.php">
ProxyErrorOverride Off
</Files>
Irgendwie ist das ganze FPM/Proxy-Gedöns ganz schön umständlich.