Um eine PHP-Datei auszuführen, öffnest du ein Terminal in ihrem Ordner und tippst php index.php. PHP führt die Datei aus und gibt ihre Ausgabe im Terminal aus. Um eine PHP-Seite im Browser zu sehen, startest du den eingebauten Server mit php -S localhost:8000 und öffnest http://localhost:8000.
php index.php
Eine erste index.php kann aus einer Zeile bestehen. Klicke auf Run: Genau das gibt php index.php aus.
PHP-Code steht nach dem Tag <?php. Alles vor diesem Tag wird als reiner Text ausgegeben, und so mischt PHP Code mit HTML.
Eine PHP-Datei auf der Kommandozeile ausführen
Die PHP CLI (Command Line Interface) führt ein Skript einmal aus und beendet sich dann. PHP muss installiert sein; wenn php -v einen Fehler ausgibt, lies zuerst PHP installieren.
cd ~/projects/hello
php index.php # run the file
php -l index.php # only check the syntax ("lint")
php index.php > out.txt # save the output to a file
php -l ist praktisch, bevor du eine Datei hochlädst: Es meldet einen Parse-Fehler mit Zeilennummer oder No syntax errors detected in index.php.
Argumente mit $argv übergeben
Wörter nach dem Dateinamen landen in $argv. $argv[0] ist immer der Name des Skripts selbst, und $argc ist die Anzahl, diesen Namen eingeschlossen. Hier läuft der Block ohne zusätzliche Argumente, also steht nur der Name drin:
Auf deinem eigenen Rechner gibt php index.php Ada 3 die Begrüßung dreimal aus. Die Fallbacks mit ?? sorgen dafür, dass das Skript auch funktioniert, wenn ein Argument fehlt. Für benannte Optionen wie --name=Ada verwendest du getopt:
<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
echo "Verbose mode\n";
}
PHP im Browser mit php -S ausführen
PHP hat einen eingebauten Entwicklungs-Webserver. Starte ihn im Ordner mit deinen Dateien:
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
Jetzt führt http://localhost:8000/ die Datei index.php aus, und http://localhost:8000/about.php führt about.php aus. Jeder Seitenaufruf führt die Datei erneut aus, mit dem Query-String in $_GET. Der Block unten verhält sich genauso: Führe ihn aus, klicke dann auf einen Link, und das Skript läuft erneut mit gesetztem $_GET['page'].
Nützliche Optionen:
php -S localhost:8000 -t public # serve the public/ folder as the web root
php -S 0.0.0.0:8000 # reachable from other devices on your network
php -S localhost:8000 router.php # send every request through router.php
Der eingebaute Server bearbeitet eine Anfrage nach der anderen und ist nur für die Entwicklung gedacht. In Produktion läuft PHP hinter Nginx oder Apache, meist über PHP-FPM.
Prüfen, wie das Skript gestartet wurde
PHP_SAPI verrät, welche „Server API“ das Skript ausführt: cli im Terminal, cli-server unter php -S und fpm-fcgi oder apache2handler hinter einem echten Webserver. Skripte, die nur im Terminal laufen sollen, prüfen das zuerst:
Eine einzelne Zeile mit php -r ausführen
Für einen schnellen Test brauchst du keine Datei. php -r führt den übergebenen Code aus, ohne das Tag <?php:
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
Im Windows-cmd setzt du den Code in doppelte Anführungszeichen und verwendest darin einfache. Für mehrere Zeilen öffnet php -a eine interaktive Shell, in der jede Anweisung beim Drücken von Enter ausgeführt wird.
Ein Skript unter macOS und Linux ausführbar machen
Füge vor <?php eine Shebang-Zeile ein und markiere die Datei als ausführbar. Die Shebang-Zeile wird nicht ausgegeben:
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
So laufen PHP-Skripte aus Cron: 0 3 * * * /usr/bin/php /home/me/backup.php.
Exit-Codes für Skripte
Ein Kommandozeilenskript meldet Erfolg oder Fehlschlag über seinen Exit-Code, den Shell-Skripte und Cron prüfen können. exit(0) bedeutet Erfolg, jede andere Zahl bedeutet einen Fehler:
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
Typischer Fehler: falsche Datei oder falscher Ordner
Could not open input file: index.php bedeutet, dass PHP die Datei vom aktuellen Ort des Terminals aus nicht findet. Prüfe den aktuellen Ordner mit pwd (oder cd unter Windows) und wechsle entweder mit cd ins Projekt oder gib den vollständigen Pfad an: php ~/projects/hello/index.php. Bei php -S bedeutet ein 404 für eine Seite, die es sicher gibt, meist, dass der Server in einem anderen Ordner gestartet wurde; stoppe ihn mit Strg+C und starte ihn am richtigen Ort neu oder gib den Ordner mit -t an. Wenn die Datei läuft, aber eine leere Seite ausgibt, schalte die Fehlerausgabe ein, um zu sehen, was schiefgelaufen ist.
Häufig gestellte Fragen
Wie führe ich eine PHP-Datei im Browser aus?
Starte den eingebauten Server in dem Ordner mit der Datei mit php -S localhost:8000 und öffne dann http://localhost:8000/yourfile.php. Die Datei direkt von der Festplatte zu öffnen funktioniert nicht, weil nichts den PHP-Code ausführt.
Wie übergebe ich Argumente an ein PHP-Skript?
Schreib sie hinter den Dateinamen: php report.php 2026 sales. Im Skript ist $argv das Array ['report.php', '2026', 'sales'] und $argc ist 3. Das erste Element ist immer der Skriptname.
Wie führe ich eine Zeile PHP ohne Datei aus?
Verwende php -r und lass das Tag <?php weg: php -r 'echo strtoupper("hi"), PHP_EOL;'. Für mehrere Zeilen öffnet php -a eine interaktive Shell.
Woran erkenne ich, ob PHP auf der Kommandozeile oder unter einem Webserver läuft?
Prüfe PHP_SAPI (oder php_sapi_name()). Im Terminal ist es "cli", unter php -S ist es "cli-server", und hinter einem Webserver etwa "fpm-fcgi" oder "apache2handler".