Was ist das PHAR-Dateiformat?
.phar-Dateien sind mit der PHP-Entwicklungsumgebung verknüpft. Ein .phar-Archiv ist das PHP-Äquivalent einer JAR-Datei - es bündelt eine gesamte PHP-Anwendung oder -Bibliothek in einem einzigen, in sich geschlossenen, ausführbaren Paket, das als eine Datei verteilt werden kann.
Welche Art von Daten können PHAR-Dateien enthalten?
.phar-Archive speichern PHP-Skripte und alle unterstützenden Assets (Templates, Konfigurationen, Ressourcen), optional komprimiert mit gzip oder bzip2 auf Datei- oder Archivebene. Jede .phar-Datei enthält einen ausführbaren PHP-Stub, ein binäres Manifest, das die gebündelten Dateien mit Metadaten auflistet, und eine optionale kryptografische Signatur (MD5, SHA-1, SHA-256, SHA-512 oder OpenSSL), die über phar.require_hash verifiziert wird.
Wie kann ich PHAR-Dateien ausführen?
.phar-Dateien können direkt mit dem PHP-Kommandozeilen-Interpreter ausgeführt werden: php app.phar. Bekannte Beispiele sind composer.phar und phpunit.phar. Das Erstellen oder Ändern einer Phar auf programmatischem Weg erfordert phar.readonly=0 in der php.ini, was standardmäßig auf 1 (schreibgeschützt) gesetzt ist.
Sicherheitsbedenken bezüglich PHAR-Dateien
Seit PHP 5.3.0 ist die Phar-Unterstützung standardmäßig aktiviert. Die automatische PHAR-Codeausführung in einer PHP-Umgebung stellt ein ernstes Systemsicherheitsrisiko dar. Es gibt bekannte Fälle, in denen bösartiger PHP-Code in PHAR-Dateien verbreitet wurde, die durch einfache Dateiendungs-Ersetzung als JPEG- oder .txt-Dateien getarnt waren. Das Öffnen einer solchen Datei kann dazu führen, dass das System mit Schadsoftware infiziert wird. Darüber hinaus kann das Auslösen von Phar-Stream-Wrappern (phar://) auf vom Angreifer kontrollierten Dateipfaden eingebettete Metadaten deserialisieren und zu einer Object-Injection-Remote-Code-Execution führen.
Sicherheit
RISIKO: HIGHEine PHAR ist ausführbarer PHP-Code, behandeln Sie sie also wie jedes Programm: Führen Sie nur Phars aus vertrauenswürdigen, offiziellen Quellen aus (composer.phar von getcomposer.org, phpunit.phar von phpunit.de) und verifizieren Sie die veröffentlichte Prüfsumme/Signatur, sofern vorhanden. Über die reine Ausführung hinaus sind Phars ein berüchtigter serverseitiger Angriffsvektor: Der phar:// Stream-Wrapper kann eingebettete Metadaten deserialisieren, was PHP-Object-Injection / Remote-Code-Execution ermöglicht, wenn eine Anwendung vom Angreifer kontrollierte Pfade an Dateifunktionen übergibt. Führen Sie niemals eine unaufgeforderte .phar aus und vermeiden Sie es auf Servern, Benutzereingaben in Funktionen einzuspeisen, die phar:// Pfade auflösen können.
Formatdetails
kurz gefasstProgramme zum Öffnen von PHAR-Dateien
php tool.phar (oder php tool.phar --help) aus, um sie zu starten. php tool.phar (oder php tool.phar --help) aus, um sie zu starten. php tool.phar (oder php tool.phar --help) aus, um sie zu starten. Technische Details
technische Spezifikation| Einstiegspunkt (Stub) | Ausführbarer PHP-Stub, der mit dem Token `__HALT_COMPILER();` endet, welcher den Beginn des binären Manifests markiert |
| Signatur-Magic am Ende | GBMB 4-Byte-Magic im abschließenden Signaturblock (nur in signierten Phars vorhanden) |
| Komprimierung | Keine, Zlib (gzip) oder Bzip2 - konfigurierbar pro Datei oder für das gesamte Archiv |
| Signaturalgorithmen | MD5, SHA-1, SHA-256, SHA-512 oder OpenSSL X.509 (gesteuert durch phar.require_hash in der php.ini) |
| Ausführungsmethode | Direkt mit `php app.phar` ausführbar; keine Extraktion erforderlich |
| Erstellungsanforderung | `phar.readonly=0` muss in der php.ini gesetzt sein, um Phar-Dateien zur Laufzeit zu erstellen oder zu ändern |
| Internes Layout | PHP-Stub + binäres Manifest (Dateiliste, API-Version, Flags) + Dateidaten + optionaler Signaturblock |
| Byte-Reihenfolge | Little-endian |
| Typische Größe | Einige KB bis einige MB (z. B. composer.phar ~2 MB, phpunit.phar ~3 MB) |
| PHP-Versionsunterstützung | Standardmäßig enthalten seit PHP 5.3 (2009); gepflegt bis PHP 8.x |
| Sicherheitsrisiko | Phar-Deserialisierung über den `phar://` Stream-Wrapper auf vom Angreifer kontrollierten Pfaden kann Object-Injection RCE auslösen |
| Unterstützte Payload-Layouts | Flat Phar, tar-basierte Phar oder zip-basierte Phar (PHP wählt das Format anhand des Manifests) |
| Veröffentlicht | 2008 (Phar extension bundled in PHP 5.3) |
| Neueste Version | Maintained as a core PHP extension (current through PHP 8.x) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.php.net |
PHAR-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu PHAR-Dateien.
Häufig gestellte Fragen
Wie führe ich eine PHAR-Datei aus?
php tool.phar. Unter Linux/macOS können Sie auch chmod +x tool.phar && ./tool.phar nutzen, falls sie ein Shebang enthält. Ein Doppelklick funktioniert normalerweise nicht.Was ist eine PHAR-Datei?
Wie öffne ich eine PHAR, um den Inhalt zu sehen?
Ist es sicher, eine PHAR-Datei auszuführen?
Warum läuft meine PHAR nicht - 'phar.readonly'-Fehler?
Kann ich eine PHAR in eine EXE umwandeln?
php tool.phar aus, oder bündeln Sie PHP mit der Phar über einen speziellen Packager, falls Sie wirklich eine eigenständige .exe benötigen.