PHP mit FastCGI pro Website testen und anpassen
4 Testen
Nun erstellen wir eine kleine PHP-Testdatei, zum Beispiel für die Website www.example1.com…
vi /srv/www/web1/web/info.php| |
…und rufen diese Datei im Browser auf (http://www.example1.com/info.php). Wenn alles korrekt läuft, sieht die Ausgabe ähnlich aus und in der Zeile Server API sollte CGI/FastCGI stehen:

Wichtig: phpinfo() zeigt die aktuell geladene Konfiguration und ist ein schnelles Werkzeug zur Verifikation. Entfernen Sie die Datei danach wieder oder schützen Sie sie, da sie sensible Informationen enthält.
5 Benutzerdefinierte php.ini für jede Website
Da jede Website ihr eigenes php-fcgi-starter Wrapper-Skript hat, können Sie für jede Website unterschiedliche php.ini-Dateien definieren. Zum Demonstrieren kopieren wir die Standard-php.ini (/etc/php5/fastcgi/php.ini) ins Verzeichnis /srv/www/web2/ und machen www.example2.com so, dass es diese Datei verwendet:
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini(Anschließend können Sie /srv/www/web2/php.ini nach Bedarf anpassen.)
Dann öffnen wir das Wrapper-Skript für web2:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter…und tragen /srv/www/web2/ in die PHPRC-Zeile ein:
| #!/bin/sh PHPRC=/srv/www/web2/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-cgi |
Starten Sie anschließend Apache neu:
systemctl restart apache2.serviceErstellen Sie eine neue phpinfo();-Datei für www.example2.com:
vi /srv/www/web2/web/info.php| |
…und rufen Sie sie im Browser auf (http://www.example2.com/info.php). Die Zeile Loaded Configuration File sollte jetzt /srv/www/web2/php.ini anzeigen:

Hinweis: PHPRC gibt das Verzeichnis an, in dem php-cgi nach php.ini sucht. Achten Sie auf Dateirechte, damit der Web-Benutzer die Datei lesen kann.
6 Einzelne PHP-Konfigurationseinstellungen ändern
Statt eine komplette php.ini zu verwenden, können Sie einzelne PHP-Einstellungen auch direkt im php-fcgi-starter Wrapper-Skript ändern. Dazu fügen Sie das -d-Flag beim Aufruf von php-cgi hinzu. Beispiel: Um magic_quotes_gpc für www.example2.com zu deaktivieren, bearbeiten Sie das Starter-Skript:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter| #!/bin/sh PHPRC=/etc/php5/fastcgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-cgi -d magic_quotes_gpc=off |
Starten Sie danach Apache neu:
systemctl restart apache2.serviceRufen Sie erneut info.php auf (http://www.example2.com/info.php) und suchen Sie die Zeile magic_quotes_gpc — sie sollte jetzt Off anzeigen:

Tipp: Sie können mehrere -d-Optionen hintereinander anhängen, um mehrere Werte zu setzen. -d überschreibt Werte aus php.ini nur für den gestarteten Prozess.
7 Links
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
Wann diese Methode fehlschlägt
- Wenn php-cgi nicht installiert oder nicht im PATH ist. Prüfen Sie /usr/bin/php-cgi.
- Wenn der Wrapper unter restriktiven Rechten läuft und keinen Zugriff auf die php.ini hat.
- Bei komplexen PHP-Erweiterungen, die globalen Systempfad benötigen; manche Erweiterungen lassen sich nicht per PHPRC lokal laden.
Alternative Ansätze
- Verwenden von PHP-FPM mit Pools pro Website (moderner, bessere Prozessverwaltung).
- Containerisierte Websites (z. B. Docker) für isolierte PHP-Umgebungen.
- Systemweite php.ini mit .user.ini-Dateien für per-Verzeichnis-Einstellungen (bei CGI nicht immer verfügbar).
Kurze Methodik zum Einrichten (Mini-Methodology)
- Prüfen, ob php-cgi verfügbar ist. 2. Erstellen von php-fcgi-starter pro Website. 3. Setzen von PHPRC oder -d-Optionen. 4. Neustart von Apache. 5. Verifizieren mit phpinfo().
Rollen-Checkliste
- Administrator:
- Prüfen, ob /usr/bin/php-cgi vorhanden ist.
- Wrapper-Skripte anlegen und Berechtigungen setzen.
- Apache nach Änderungen neu starten.
- Entwickler:
- phpinfo()-Seite nur temporär nutzen.
- Lokal gewünschte php.ini-Optionen testen.
- Betreiber / DevOps:
- Überwachen der PHP-Prozesse und Memory-Usage bei höheren PHP_FCGI_CHILDREN.
- Dokumentation der per-Website Einstellungen.
Kriterien für Tests
- phpinfo zeigt CGI/FastCGI als Server API.
- Loaded Configuration File verweist auf die erwartete php.ini.
- Individuelle -d-Flags überschreiben gewünschte Werte.
- Web-Anwendung verhält sich erwartungsgemäß ohne Fehler in Logs.
Faktbox: Wichtige Werte
- PHP_FCGI_MAX_REQUESTS: 5000 (im Beispiel)
- PHP_FCGI_CHILDREN: 8 (im Beispiel)
- PHPRC: Pfad zum Verzeichnis mit php.ini
Kurzglossar
- PHPRC: Umgebungsvariable, die php-cgi anweist, wo nach php.ini zu suchen ist.
- php-cgi: CGI-fähiger PHP-Interpreter, startet für jede Anfrage Prozesse.
- php-fcgi-starter: Wrapper-Skript, das php-cgi mit Umgebungsvariablen startet.
Zusammenfassung
Sie können pro Website unterschiedliche PHP-Einstellungen via PHPRC oder -d setzen. Testen Sie Änderungen mit einer temporären info.php und prüfen Sie die Ausgabe. Ziehen Sie PHP-FPM oder Container in Betracht, wenn Sie eine modernere oder skalierbarere Lösung benötigen.
Ähnliche Materialien
Podman auf Debian 11 installieren und nutzen
Apt-Pinning: Kurze Einführung für Debian
FSR 4 in jedem Spiel mit OptiScaler
DansGuardian + Squid (NTLM) auf Debian Etch installieren
App-Installationsfehler auf SD-Karte (Error -18) beheben