PHP mit FastCGI testen und pro Website konfigurieren

Kurzfassung
1. Schnelltest: info.php anlegen
Erstellen Sie zur Überprüfung eine kleine PHP-Testdatei im Document Root der Website, beispielsweise für www.example1.com:
vi /srv/www/web1/web/info.php
Fügen Sie folgenden Inhalt ein:
Rufen Sie die Datei im Browser auf: http://www.example1.com/info.php. Wenn alles richtig läuft, sollte die Ausgabe ähnlich aussehen und in der Zeile “Server API” CGI/FastCGI anzeigen:
Wichtig: Entfernen Sie die info.php wieder von produktiven Servern oder schützen Sie sie mit Zugriffskontrolle, da sie viele Systeminformationen offenlegt.
2. Eigene php.ini pro Web‑Site definieren
Weil jede Website ihr eigenes php-fcgi-starter Wrapper-Skript haben kann, lässt sich pro Host eine individuelle php.ini verwenden. Beispiel: Kopieren der Standard-konfiguration in das Verzeichnis von www.example2.com und Anpassung der Besitzrechte:
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini
(Ändern Sie /srv/www/web2/php.ini nun nach Bedarf.)
Öffnen Sie das Starter-Skript des PHP-FastCGI für web2:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
Setzen Sie in diesem Skript PHPRC auf das Verzeichnis mit der gewünschten php.ini:
#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
Anschließend Apache neu starten:
/etc/init.d/apache2 restart
Erstellen Sie nun eine info.php für www.example2.com:
vi /srv/www/web2/web/info.php
Rufen Sie http://www.example2.com/info.php auf. In der Zeile “Loaded Configuration File” sollte nun /srv/www/web2/php.ini stehen:
Hinweis: PHPRC erwartet ein Verzeichnis oder den Pfad zur Datei; testen Sie beide Varianten, falls Ihr System anders reagiert.
3. Einzelne PHP‑Einstellungen ändern (-d Schalter)
Statt einer kompletten php.ini können Sie einzelne Einstellungen per Kommandozeile an php-cgi übergeben. Dazu fügen Sie den -d Schalter in das Starter-Skript ein. Beispiel: Deaktivieren von magic_quotes_gpc für www.example2.com:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
Bearbeiten Sie das Skript wie folgt:
#!/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
Apache neu starten:
/etc/init.d/apache2 restart
Rufen Sie wieder http://www.example2.com/info.php auf und suchen Sie nach der Einstellung magic_quotes_gpc — sie sollte nun Off anzeigen:
Tipp: Sie können mehrere -d Parameter anhängen, z. B. -d memory_limit=256M -d display_errors=0.
4. Prüfen — Akzeptanzkriterien
- Server API zeigt CGI/FastCGI.
- Bei Nutzung einer individuellen php.ini zeigt “Loaded Configuration File” den erwarteten Pfad (/srv/www/
/php.ini). - Bei Verwendung des -d Schalters zeigt phpinfo() die überschriebenen Werte (z. B. magic_quotes_gpc = Off).
Testfälle:
- Erstellen Sie eine phpinfo()-Datei und prüfen Sie die drei genannten Punkte.
- Setzen Sie eine falsche Pfadangabe in PHPRC und verifizieren Sie, dass PHP zur Standard-Konfiguration zurückfällt (Fehlerfall-Test).
5. Alternative Ansätze und Fallstricke
- Alternative: PHP-FPM (php-fpm) bietet bessere Prozessverwaltung, Pools pro Website und oft bessere Performance als klassische FastCGI-Wrapper.
- mod_php: Einfacher zu konfigurieren, aber teilt Prozesse mit Apache und ist weniger geeignet für multi-tenant-Umgebungen.
- Fallstrich: Rechte und SELinux/AppArmor können das Laden von php.ini aus Nicht-Standardverzeichnissen verhindern. Prüfen Sie Logs (/var/log/apache2/error.log) und Sicherheitsrichtlinien.
Kurzheuristik: Für mehrere Sites mit individueller Konfiguration -> php-fpm; für vorhandene FastCGI-Infrastruktur mit Wrappern -> PHPRC oder -d verwenden.
6. Rollenbasierte Checkliste
- Systemadministrator: Backup der Original php.ini, Berechtigungen setzen (chown), Apache neu starten, Logs prüfen.
- Web-Developer: Risiken durch phpinfo() verstehen, gewünschte Einstellungen testen, Feature-Flags (z. B. display_errors) anpassen.
- Security Engineer: phpinfo() entfernen oder absichern, sensible Optionen (expose_php, display_errors) deaktivieren, Audit der Verzeichnisse und Nutzerrechte.
7. Mini‑Methodologie (Schritt-für-Schritt)
- Erstellen Sie info.php im Document Root.
- Prüfen Sie aktuelle Konfiguration über phpinfo().
- Legen Sie /srv/www/
/php.ini an und passen Sie Rechte an. - Setzen Sie PHPRC im php-fcgi-starter auf das gewünschte Verzeichnis.
- Alternativ: Fügen Sie exec /usr/bin/php-cgi -d option=value hinzu.
- Apache neu starten und phpinfo() erneut prüfen.
- Entfernen oder schützen Sie info.php nach Testzwecken.
8. Kurzes Glossar
- PHPRC: Umgebungvariable, die angibt, wo PHP die php.ini sucht.
- php-fcgi-starter: Wrapper-Skript, das php-cgi mit Umgebung und Optionen startet.
- -d Schalter: Übergibt einzelne INI-Optionen an php-cgi beim Start.
9. Sicherheitshinweise
- phpinfo() offenbart Systemdetails — niemals dauerhaft in Produktionsumgebungen belassen.
- Achten Sie auf Dateiberechtigungen und Security-Module (SELinux/AppArmor).
- Validieren Sie, dass benutzerdefinierte php.ini keine unsicheren Einstellungen aktivieren (z. B. allow_url_fopen).
Zusammenfassung
Mit wenigen Schritten können Sie PHP unter FastCGI testen und pro Website eigene Konfigurationen bereitstellen. Entweder per PHPRC auf ein Verzeichnis mit einer individuellen php.ini verweisen oder einzelne Werte mit dem -d Schalter überschreiben. Immer danach Apache neu starten und die phpinfo()-Ausgabe prüfen.
Links
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
Ähnliche Materialien

HDR in Stalker 2 aktivieren — Schritt für Schritt

Wortvorschläge wie auf dem Smartphone in Windows

Tweets zum späteren Lesen speichern

Dogecoin Mining: Laptop-Anleitung

Touchpad- und Mausgeschwindigkeit getrennt einstellen
