PHP-FastCGI testen und pro Site php.ini setzen

4 Testen
Nun erstellen wir eine kleine PHP-Testdatei, zum Beispiel in der Website www.example1.com…
vi /var/www/web1/web/info.php
| |
… und rufen diese Datei im Browser auf (http://www.example1.com/info.php). Wenn alles korrekt konfiguriert ist, sollte die Ausgabe ähnlich aussehen und in der Zeile Server API sollte CGI/FastCGI stehen:
Wichtig: phpinfo() zeigt viele Konfigurationsdaten an. Entfernen Sie solche Testseiten wieder von öffentlichen Servern, wenn Sie fertig sind.
5 Benutzerdefinierte php.ini für jede Website
Da jede Website ihr eigenes php-fcgi-starter-Wrapper-Skript hat, können Sie für verschiedene Websites unterschiedliche php.ini-Dateien verwenden. Zum Demonstrieren kopieren wir die Standard-php.ini ( /etc/php5/cgi/php.ini) in das Verzeichnis /var/www/web2/ und lassen www.example2.com die php.ini aus /var/www/web2/ verwenden:
cp /etc/php5/cgi/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini
(Sie können /var/www/web2/php.ini jetzt nach Belieben anpassen.)
Dann öffnen wir das Starter-Skript für web2:
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter
… und tragen /var/www/web2/ in die PHPRC-Zeile ein:
| #!/bin/sh PHPRC=/var/www/web2/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php
|
Anschließend Apache neu laden:
/etc/init.d/apache2 reload
Erstellen Sie eine neue phpinfo()-Datei für www.example2.com:
vi /var/www/web2/web/info.php
| |
… und rufen Sie sie im Browser auf (http://www.example2.com/info.php). In der Zeile Loaded Configuration File sollte nun /var/www/web2/php.ini stehen:
6 Einzelne PHP-Konfigurationseinstellungen ändern
Statt einer kompletten neuen php.ini können Sie auch einzelne PHP-Konfigurationswerte via -d-Option an den PHP-Interpreter übergeben (oder beides kombinieren). Beispiel: Um magic_quotes_gpc für www.example2.com zu deaktivieren, bearbeiten Sie das Starter-Skript:
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter
| #!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off
|
Apache neu laden:
/etc/init.d/apache2 reload
Rufen Sie nun wieder info.php auf (http://www.example2.com/info.php) und suchen Sie nach der Zeile magic_quotes_gpc — sie sollte jetzt Off anzeigen:
Wann das Verfahren nicht funktioniert
- Wenn PHP als mod_php (Apache-Modul) geladen wird, ignoriert Apache PHPRC in Wrapper-Skripten. In diesem Fall müssen Sie mod_php-Konfigurationen über php.ini des Systems oder über Apache-Module ändern.
- Bei stark virtualisierten oder containerisierten Umgebungen (z. B. Docker mit eigenem PHP-FPM) sind andere Mechanismen sinnvoller.
- Unzureichende Dateirechte verhindern das Lesen der individuellen php.ini; prüfen Sie Besitzer und Berechtigungen.
Alternative Ansätze
- PHP-FPM pro Pool konfigurieren: Bessere Performance und mehr Kontrolle als klassische FastCGI-Wrapper.
- mod_php: Einfacher, wenn keine getrennten PHP-Konfigurationen pro Site nötig sind (nachteil: geringere Isolation).
- Container pro Anwendung: Jede Site erhält ein eigenes Image mit eigener PHP-Konfiguration.
Checkliste für Administratoren
- Testdatei info.php anlegen und aufrufen
- PHPRC im php-fcgi-starter korrekt setzen
- Dateiberechtigungen der php.ini prüfen (z. B. web2:web2)
- Apache neu laden und phpinfo prüfen
- Testdatei entfernen oder schützen, wenn nicht mehr benötigt
Minimale Testfälle und Akzeptanzkriterien
- Testfall 1: info.php liefert eine Server API mit CGI/FastCGI → erfüllt
- Testfall 2: Loaded Configuration File zeigt den Pfad zur individuellen php.ini → erfüllt
- Testfall 3: Wenn eine Einstellung via -d gesetzt wurde, zeigt phpinfo() den gewünschten Wert → erfüllt
Akzeptanzkriterien:
- Die Website verwendet die gewünschte PHP-Konfiguration, ohne andere Sites zu beeinflussen.
- Änderungen sind reproduzierbar über das jeweilige php-fcgi-starter-Skript.
Schnellreferenz / Snippets
- PHPRC setzen:
PHPRC=/var/www/web2/
export PHPRC
- Einzelne Einstellung mit -d:
exec /usr/lib/cgi-bin/php -d memory_limit=256M
- Apache neu laden:
/etc/init.d/apache2 reload
Entscheidungsbaum (Mermaid)
flowchart TD
A[Start: Benötigen Sie pro-Website PHP-Konfiguration?] -->|Ja| B{Ist PHP-FPM verfügbar?}
B -->|Ja| C[Erstelle separaten PHP-FPM-Pool pro Site]
B -->|Nein| D[Verwende php-fcgi-starter mit PHPRC oder -d]
A -->|Nein| E[mod_php oder gemeinsame php.ini verwenden]
Sicherheits- und Betriebsnotizen
- Entfernen Sie phpinfo()-Seiten nach dem Test, um Informationslecks zu vermeiden.
- Überwachen Sie PHP-FCGI-Prozesse auf Ressourcenverbrauch (PHP_FCGI_CHILDREN, PHP_FCGI_MAX_REQUESTS).
- Pfade wie /var/www/web2/php.ini sollten nur für berechtigte Benutzer editierbar sein.
Links
- mod_fcgid: http://httpd.apache.org/mod_fcgid/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Debian: http://www.debian.org/
Über den Autor
Falko Timme ist Inhaber von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist Lead-Maintainer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat außerdem zum O’Reilly-Buch «Linux System Administration» beigetragen.
Zusammenfassung
- Testen Sie mit info.php, ob PHP als CGI/FastCGI läuft.
- Nutzen Sie PHPRC im php-fcgi-starter, um pro-Website php.ini zu setzen.
- Alternativ setzen Sie einzelne Optionen mit -d oder verwenden PHP-FPM für mehr Kontrolle.
Wichtige Stichpunkte: PHPRC, php-fcgi-starter, phpinfo(), -d-Option, Apache neu laden
Ähnliche Materialien

YouTube‑Wiedergabeverlauf ansehen & löschen
Asterisk installieren: Erste PBX einrichten

Microsoft Store funktioniert nicht — Fehler beheben

WordPress-Sicherheits-Scan: Leitfaden für Admins
