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