de:phphandling

mod_php, suPHP und FastCGI

Inhalt

Dieser Artikel beschreibt die Unterschiede der verschiedenen Ausführungsmethoden für PHP: mod_php, suPHP und FastCGI/FPM.

mod_php

Mit mod_php (Apache-SAPI) wird der PHP-Interpreter direkt in die Apache-Prozesse integriert. PHP-Scripte laufen somit zwangsweise unter den Benutzerrechten des Webservers (z.B. www-data).

mod_php Prozess Struktur

Damit ein Benutzer nicht mit einem PHP-Script auf die Verzeichnisinhalte anderer Benutzer zugreifen kann, ist es extrem wichtig, Sicherheitsmechanismen wie safe_mode und open_basedir zu verwenden. Da aber immer wieder mal Sicherheitslücken in PHP aufgetreten sind, mit denen sich diese Einschränkungen umgehen ließen, wird mod_php auf kommerziellen Shared-Hosting-Umgebungen üblicherweise nicht eingesetzt.

Da der PHP-Interpreter dauerhaft mit dem jeweiligen Apache-Prozess im Arbeitsspeicher verbleibt, entfällt der Start-Overhead beim Aufruf eines PHP-Scripts. Zusammen mit Opcode-Caches (z.B. APC, xCache) kann auch der ausgeführte PHP-Code zwischengespeichert werden, was den Overhead vollständig minimiert. Bei Verwendung von Opcode-Caches teilen sich aber auch wieder PHP-Scripte verschiedener Benutzer den selben Arbeitsspeicher, was unter Umständen auch ein Sicherheitsproblem darstellen kann.

Geeignet für: allein genutzte Webserver („managed server“), bei denen eine Isolation der Webspaces nicht notwendig ist.

suPHP

Mit suPHP wird PHP über die CGI-Schnittstelle (CGI-SAPI) ausgeführt. Unmittelbar vor dem Aufruf des PHP-Interpreters ändert suPHP aber seine Benutzerrechte auf die des gewünschten Benutzers, so dass Scripte mit dessen Rechten ausgeführt werden.

suPHP Prozess Struktur

Bei jedem einzelnen Aufruf eines PHP-Scripts wird also ein PHP-Prozess gestartet, das jeweilige Script kompiliert und ausgeführt, und anschließend wird PHP vollständig beendet. Opcode-Caches haben also keinerlei Wirkung, da PHP nach jedem Scriptlauf wieder komplett beendet wird. Dafür bietet die Ausführung unter den eigenen Benutzerrechten die beste Isolation der Prozesse untereinander und somit die maximale Sicherheit.

suPHP eignet sich ideal für Shared-Hosting-Kunden, deren Websites vergleichsweise selten aufgerufen werden und die keinen zu großen Overhead (z.B. komplexe Frameworks) mit sich bringen.

Geeignet für: Shared-Hosting-Websites, die nicht sehr häufig ausgeführt werden.

FastCGI / FPM

FastCGI und FPM (FastCGI Process Manager) stellen eine Weiterentwicklung der CGI-Schnittstelle dar. Auch hier wird PHP unter den Rechten des gewünschten Benutzers ausgeführt, nur wird PHP danach nicht sofort beendet, sondern kann viele Anfragen nacheinander bearbeiten. Opcode-Caches bringen in diesem Fall also wieder einen Geschwindigkeitsvorteil.

FastCGI Prozess Struktur

LiveConfig konfiguriert mod_fcgid für die FastCGI-Schnittstelle; damit werden die benötigten PHP-Prozesse automatisch durch Apache gestartet und bei Inaktivität nach einiger Zeit auch wieder automatisch beendet.

Geeignet für: anspruchsvolle Websites (Zend Framework, Typo3, etc.) und PHP-Websites mit hohen Zugriffszahlen.

de/phphandling.txt · Zuletzt geändert: 2015/05/26 17:05 von wikiadmin

Benutzer-Werkzeuge