Technologieführer

PHP-FastCGI testen und pro Site php.ini setzen

4 min read Webhosting Aktualisiert 27 Sep 2025
PHP-FastCGI testen und pro Site php.ini setzen
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:

PHPinfo-Ausgabe mit hervorgehobener Server-API-Zeile, die CGI/FastCGI anzeigt

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:

phpinfo zeigt Loaded Configuration File mit Pfad /var/www/web2/php.ini

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:

phpinfo zeigt die Einstellung magic_quotes_gpc mit dem Wert Off

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

Ü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

Autor
Redaktion

Ähnliche Materialien

YouTube‑Wiedergabeverlauf ansehen & löschen
Datenschutz

YouTube‑Wiedergabeverlauf ansehen & löschen

Asterisk installieren: Erste PBX einrichten
Telekommunikation

Asterisk installieren: Erste PBX einrichten

Microsoft Store funktioniert nicht — Fehler beheben
Windows Support

Microsoft Store funktioniert nicht — Fehler beheben

WordPress-Sicherheits-Scan: Leitfaden für Admins
Sicherheit

WordPress-Sicherheits-Scan: Leitfaden für Admins

Forum-Threads als RSS mit Blogger per E‑Mail
Anleitungen

Forum-Threads als RSS mit Blogger per E‑Mail

OCS Inventory NG 2 auf CentOS 5.5 installieren
Systemadministration

OCS Inventory NG 2 auf CentOS 5.5 installieren