Wenn ihr zum Abkapseln von PHP-Umgebungen auf euren Apache-Servern Lösungen wie fcgid
in Kombination mit suexec
verwendet, dann kann ich euch empfehlen, euch mal den FastCGI Process Manager anzugucken.
Etwas, das ich besonders zu schätzen weiß, ist, dass man im Gegensatz zur Lösung mit fcgid
und suexec
über die CGI-Schnittstelle von PHP bei FPM auch einzelne Werte aus der globalen PHP-Konfigurationsdatei in den einzelnen Pool-Konfigurationen überschreiben kann. So hat man eine Konfigurationsdatei und kann dann in den speziellen Pool-Konfigurationen dynamisch Einstellungen (zum Beispiel open_basedir
) überschreiben und muss nicht jedes mal die komplette PHP-Konfigurationsdatei duplizieren.
Außerdem läuft der FastCGI Process Manager als Daemon und übernimmt auch die Rechteverwaltung. Das heißt, dass man in der Apache-Konfiguration kein suexec
mehr braucht, sondern dass man den Benutzer und die Gruppe, unter der PHP ausgeführt werden soll, in den einzelnen Pool-Konfigurationsdateien festlegen kann. Für jeden einzelnen Pool wird dann ein UNIX-Domain-Socket angelegt, über das man dann in der Apache-Konfiguration mit dem Proxy-Modul proxy_fcgi
kommunizieren kann:
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/<version>/hostname.tld.sock|fcgi://"
</FilesMatch>
Und wenn man später aus irgendeinem Grund auf Nginx umsteigt und PHP direkt über den Nginx ansprechen möchte, dann kann man das einfach tun, ohne die PHP-Konfiguration auch nur anzufassen oder den PHP-FPM-Daemon neu zu starten. Man spricht einfach das UNIX-Socket über Nginx anstatt Apache an. Wunderschön!