PHP – mehr als nur Webentwicklung
\n\nWenn von „PHP“ die Rede ist, denken die meisten sofort an Social-Media-Feeds, Warenkörbe im Onlineshop oder das WordPress-Backend. Das ist naheliegend: Die Sprache wurde als Werkzeug für das Web geboren. Aber was, wenn ich Ihnen sage, dass PHP Aufgaben hervorragend meistert, die man normalerweise Python, Bash oder Go überlässt? Die Rede ist von der Cross-Plattform-Entwicklung mit PHP – also der Erstellung von Tools, die auf Windows, Linux und macOS ohne Code-Anpassungen laufen.
\n\nIn diesem Artikel lernen Sie nicht, wie man Formulare erstellt. Wir zeigen Ihnen, wie Sie einen konsolenbasierten Dateimanager, einen Log-Parser und ein Ordner-Überwachungssystem schreiben – und das alles in reinem PHP, ohne einen einzigen Webserver. Sie erfahren, wie Sie die Fallstricke verschiedener Betriebssysteme umgehen und Code schreiben, der überall gleich funktioniert.
\n\nBereit? Dann öffnen Sie Ihr Terminal und lassen Sie sich von den Möglichkeiten des guten alten PHP überraschen.
\n\nWarum PHP für plattformübergreifende Aufgaben? Drei starke Argumente
\n\nBevor wir in den Code eintauchen, klären wir, warum man PHP überhaupt für Desktop- und Server-Tools einsetzen sollte. Python hat Django und Flask, Node.js hat Express. Warum also PHP?
\n\n- \n
- Allgegenwärtig verfügbar. PHP ist auf fast jedem Shared-Hosting und auf 80% der Server weltweit installiert. Wenn Sie ein Admin-Tool schreiben, ist die Wahrscheinlichkeit hoch, dass PHP auf der Zielmaschine bereits vorhanden ist. Keine zusätzliche Runtime nötig. \n
- Niedrige Einstiegshürde für Webentwickler. Sie kennen bereits die Syntax, die String- und Array-Funktionen. Sie müssen keine neue Sprache lernen, um Routineaufgaben auf dem Server zu automatisieren. \n
- Umfangreiche Standardbibliothek. PHP bietet alles für die Arbeit mit Dateien, Prozessen, Netzwerk-Sockets und ZIP-Archiven. PECL-Erweiterungen wie
paralleloderpthreadsermöglichen sogar Multithreading. \n
Natürlich ist PHP nicht ideal für GUI-Anwendungen (obwohl es PHP-GTK gibt). Aber für Konsolen-Tools und Dienste ist es ein ausgereiftes und stabiles Werkzeug. Sehen wir uns an, wie man solchen Code richtig schreibt.
\n\nGrundlagen plattformunabhängigen PHP-Codes
\n\nDas Wichtigste zuerst: Pfadtrennzeichen. Unter Linux ist es /, unter Windows \\. PHP bietet die Konstante DIRECTORY_SEPARATOR, aber noch praktischer ist die Verwendung des universellen Schrägstrichs / – Windows versteht diesen ab PHP 7+ problemlos.
Richtiger Umgang mit Pfaden
\n\n<?php\n// Schlecht – fest codierter Schrägstrich\n$path = '/var/log/errors.log'; // Fehler unter Windows\n\n// Gut – Verwendung von DIRECTORY_SEPARATOR\n$path = 'var' . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . 'errors.log';\n\n// Optimal – Verwendung von / und realpath()\n$path = __DIR__ . '/logs/errors.log';\necho $path; // Funktioniert auf beiden Betriebssystemen\n?>\n\n\nEin zweiter wichtiger Punkt ist die Zeichenkodierung. Unter Windows arbeitet die Konsole standardmäßig oft mit CP866, während PHP-Skripte UTF-8 verwenden. Für die Ausgabe von Umlauten und Sonderzeichen unter Windows nutzen Sie die Funktion mb_convert_encoding() oder setzen Sie die Kodierung via chcp 65001 am Skriptanfang.
Beispiel: Plattformunabhängiges Lesen einer Datei
\n\n<?php\nfunction readLogFile(string $filename): string {\n // Prüfen, ob die Datei existiert\n if (!file_exists($filename)) {\n throw new RuntimeException("Datei $filename nicht gefunden");\n }\n \n // Inhalt lesen\n $content = file_get_contents($filename);\n \n // Betriebssystem erkennen und Kodierung für die Ausgabe konvertieren\n if (PHP_OS_FAMILY === 'Windows') {\n $content = mb_convert_encoding($content, 'CP866', 'UTF-8');\n }\n \n return $content;\n}\n\necho readLogFile('logs/app.log');\n?>\n\n\nEin echtes Tool entwickeln: Ordneränderungen überwachen
\n\nLassen Sie uns etwas Nützliches schreiben – ein Skript, das einen Ordner überwacht und aus