← Zurück zu CodeKeep
September 5, 2026

Was ist PHP? Eine praxisnahe Einführung für Home‑Labs, Server und Docker

Grundlagen und Praxis: Was PHP ist, wie es auf Linux, in Docker und mit nginx/php-fpm betrieben wird – inklusive konkreter Befehle und Beispiele.

Was ist PHP?

Ein kurzer Überblick

PHP (PHP: Hypertext Preprocessor) ist eine weit verbreitete Skriptsprache, die hauptsächlich zur Erzeugung dynamischer Inhalte auf Webservern eingesetzt wird. PHP wird serverseitig ausgeführt und erzeugt HTML, JSON oder andere Ausgaben, die an Browser oder Clients gesendet werden. Technisch wird PHP vom Zend Engine‑Interpreter verarbeitet: Quellcode wird intern in Opcodes übersetzt und ausgeführt.

Wofür wird PHP verwendet?

  • Generierung dynamischer Webseiten und Templates.
  • Implementierung von Web-APIs und Microservices.
  • CLI-Skripte für Wartung, Cronjobs oder Migrations-Tools.
  • Als Laufzeit in PHP-FPM, mod_php oder in Docker-Containern.

Kernkonzepte

Interpreter, SAPI und Extensions

PHP läuft nicht als klassischer Compiler-Ausgabecode, sondern als interpretierte Sprache, die in Opcodes übersetzt wird. Die Art und Weise, wie PHP mit dem Webserver kommuniziert, wird durch die SAPI (Server API) bestimmt. Wichtige SAPIs sind:

  • PHP-FPM (FastCGI Process Manager): üblich in Kombination mit nginx und modernen Setups.
  • mod_php: Apache-Modul (seltener bei modernen Setups, da weniger flexibel).
  • CLI: PHP als Befehlszeilenwerkzeug für Skripte.

Typisierung und Ökosystem

PHP ist typisiert, aber mit vergleichsweise flexibler (loser) Typisierung. Seit neueren Releases wurden strengere Typisierungsoptionen eingeführt, und viele Frameworks sowie Composer als Paketmanager prägen das Ecosystem.

Praktische Beispiele für Linux, Docker und Home‑Lab

Installation auf Debian/Ubuntu (Beispiel)

Ein übliches Paket-Set für Webserverbetrieb:

sudo apt update sudo apt install -y php php-cli php-fpm php-mbstring php-xml php-curl php-mysql

Versionen und Paketnamen können je nach Distribution und Release variieren. Nach der Installation prüfen:

php -v php -m

Schnelltest mit dem integrierten Webserver

Für lokale Tests (nicht für Produktion) eignet sich der eingebaute Server:

php -S 0.0.0.0:8000 -t public

Lege eine public/index.php mit einfachem Inhalt an, z. B.:

nginx + PHP-FPM (minimales Beispiel)

Ein typischer nginx-Serverblock, angepasst an dein System (Sockpfad oder TCP-Port gegebenenfalls anpassen):

server { listen 80; server_name example.local; root /var/www/html; index index.php index.html;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # Entweder Socket (Beispiel):
    fastcgi_pass unix:/run/php/php-fpm.sock;
    # Oder TCP (Beispiel):
    # fastcgi_pass 127.0.0.1:9000;
}

}

Hinweis: Der Pfad zur PHP-FPM-Socket-Datei oder der Port hängt von Distribution und PHP-Version ab (z. B. /run/php/php7.4-fpm.sock oder /run/php/php8.1-fpm.sock). Kontrolliere die tatsächliche Konfiguration deines Systems.

Composer: Paketverwaltung

Composer ist der De-facto-Paketmanager für PHP. Ein üblicher Weg zur Installation (offizielle Anleitung prüfen):

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php --install-dir=/usr/local/bin --filename=composer php -r "unlink('composer-setup.php');" composer --version

Composer erleichtert Abhängigkeiten, Autoloading und Projekt-Setup in Frameworks wie Laravel, Symfony oder kleineren Bibliotheken.

Docker-Beispiele für Home‑Lab

Für Test-Setups im Home‑Lab sind offizielle PHP-Images praktisch. Zwei schnelle Beispiele:

  1. Ein schneller Apache-PHP-Container für Tests:

docker run --rm -p 8080:80 -v "$(pwd)":/var/www/html php:8.2-apache

Ersetze 8.2 durch die gewünschte Version. Auf http://localhost:8080 siehst du dann deine Dateien.

  1. Minimaler docker-compose-Stack mit PHP-FPM und nginx (Beispiel):

version: '3.8' services: php: image: php:8.2-fpm volumes: - ./www:/var/www/html nginx: image: nginx:stable-alpine ports: - "8080:80" volumes: - ./www:/var/www/html:ro - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro

Auch hier gilt: Ersetze die PHP-Version nach Bedarf. Die nginx.conf sollte für PHP-FPM konfiguriert sein (siehe vorheriges nginx-Beispiel).

Performance- und Sicherheits-Hinweise

  • Aktiviere OPcache in Produktion, um Performance zu verbessern.
  • Verwende PHP-FPM-Pools, um verschiedene Nutzer/Projekte zu isolieren.
  • Halte PHP up-to-date und installiere nur benötigte Extensions.
  • Vermeide unsichere PHP-Einstellungen (display_errors in Produktion deaktivieren, sichere Upload- und Dateiberechtigungen).

Praxis-Tipps für Server-Administratoren

  • Teste neue PHP-Versionen zuerst in einer Container- oder VM-Umgebung, bevor du sie im Produktivsystem einsetzt.
  • Nutze Monitoring (z. B. Prozessauslastung, FPM-Status, Antwortzeiten) und configure logging für slow-requests.
  • Automatisiere Builds und Deploys via Docker oder Konfigurationsmanagement, um Konsistenz im Home‑Lab zu gewährleisten.

Weiterführende Ressourcen

  • Die offizielle Dokumentation: php.net (sinnvoll für Referenz und Funktionserklärungen).
  • Composer und Packagist für Paketverwaltung und Bibliotheken.

Dieser Artikel bietet einen kompakten, praxisnahen Einstieg in PHP für Administratoren und Hobby‑Operatoren im Home‑Lab. Für produktive Umgebungen gelten zusätzliche Sicherheits- und Betriebsaspekte, die projektabhängig konfiguriert werden sollten.