Technologieführer

PHP mit FastCGI pro Website testen und anpassen

4 min read Serverkonfiguration Aktualisiert 21 Oct 2025
PHP FastCGI pro Website testen & anpassen
PHP FastCGI pro Website testen & 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:

PHPinfo-Ausgabe: Server API zeigt CGI/FastCGI

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.service

Erstellen 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:

PHPinfo-Ausgabe: Geladene Konfigurationsdatei zeigt /srv/www/web2/php.ini

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.service

Rufen Sie erneut info.php auf (http://www.example2.com/info.php) und suchen Sie die Zeile magic_quotes_gpc — sie sollte jetzt Off anzeigen:

PHPinfo-Ausgabe: magic_quotes_gpc ist Off

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


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)

  1. 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.

Autor
Redaktion

Ähnliche Materialien

Podman auf Debian 11 installieren und nutzen
DevOps

Podman auf Debian 11 installieren und nutzen

Apt-Pinning: Kurze Einführung für Debian
Systemadministration

Apt-Pinning: Kurze Einführung für Debian

FSR 4 in jedem Spiel mit OptiScaler
Grafikkarten

FSR 4 in jedem Spiel mit OptiScaler

DansGuardian + Squid (NTLM) auf Debian Etch installieren
Netzwerk

DansGuardian + Squid (NTLM) auf Debian Etch installieren

App-Installationsfehler auf SD-Karte (Error -18) beheben
Android

App-Installationsfehler auf SD-Karte (Error -18) beheben

Netzwerkordner mit KNetAttach in KDE
Linux Netzwerk

Netzwerkordner mit KNetAttach in KDE