Hvad er PHAR-filformatet?
.phar-filer er tilknyttet PHP-udviklingsmiljøet. Et .phar-arkiv er PHP-modstykket til en JAR-fil - det pakker en hel PHP-applikation eller et bibliotek ind i en enkelt selvstændig, eksekverbar pakke, der kan distribueres som én fil.
Hvilken type data kan PHAR-filer indeholde?
.phar-arkiver gemmer PHP-scripts og alle understøttende aktiver (skabeloner, konfigurationer, ressourcer), valgfrit komprimeret med gzip eller bzip2 på fil- eller arkivniveau. Enhver .phar-fil indeholder en eksekverbar PHP-stub, et binært manifest, der viser de bundtede filer med metadata, og en valgfri kryptografisk signatur (MD5, SHA-1, SHA-256, SHA-512 eller OpenSSL) verificeret via phar.require_hash.
Hvordan kan jeg køre PHAR-filer?
.phar-filer kan køres direkte med PHP-kommandolinje-fortolkeren: php app.phar. Kendte eksempler inkluderer composer.phar og phpunit.phar. Oprettelse eller ændring af en Phar programmatisk kræver phar.readonly=0 i php.ini, som som standard er sat til 1 (skrivebeskyttet).
Sikkerhedsovervejelser vedrørende PHAR-filer
Siden PHP 5.3.0 har Phar-understøttelse været aktiveret som standard. Automatisk PHAR-kodeeksekvering i et PHP-miljø udgør alvorlige systemsikkerhedsrisici. Der er kendte tilfælde, hvor ondsindet PHP-kode blev distribueret i PHAR-filer maskeret som JPEG eller .txt-filer ved hjælp af simpel filendelsesudskiftning. Åbning af en sådan fil kan medføre, at systemet bliver inficeret med ondsindet software. Desuden kan aktivering af Phar-stream-wrappers (phar://) på filstier kontrolleret af en angriber deserialisere indlejrede metadata og føre til fjernafvikling af kode via objekt-injektion.
Sikkerhed og tryghed
RISIKO: HIGHEn PHAR er eksekverbar PHP-kode, så behandl den som ethvert andet program: kør kun Phars fra betroede, officielle kilder (composer.phar fra getcomposer.org, phpunit.phar fra phpunit.de), og bekræft den publicerede checksum/signatur, når den er tilgængelig. Udover selve kørslen er Phars en berygtet angrebsvektor på serversiden: phar:// stream-wrapperen kan deserialisere indlejrede metadata, hvilket muliggør PHP-objekt-injektion / fjernafvikling af kode, hvis en applikation sender angriber-kontrollerede stier til filfunktioner. Kør aldrig en uopfordret .phar, og undgå på servere at sende brugerinput ind i funktioner, der kan opløse phar://-stier.
Formatdetaljer
kort fortaltProgrammer der åbner PHAR-filer
php tool.phar (eller php tool.phar --help) for at eksekvere den. php tool.phar (eller php tool.phar --help) for at eksekvere den. php tool.phar (eller php tool.phar --help) for at eksekvere den. Tekniske detaljer
dyb specifikation| Indgangspunkt (stub) | Eksekverbar PHP-stub, der slutter med `__HALT_COMPILER();` token, som markerer starten på det binære manifest |
| Afsluttende signatur-magic | GBMB 4-byte magic i den afsluttende signaturblok (kun til stede i signerede Phars) |
| Komprimering | Ingen, Zlib (gzip) eller Bzip2 - konfigurerbar pr. fil eller for hele arkivet |
| Signaturalgoritmer | MD5, SHA-1, SHA-256, SHA-512 eller OpenSSL X.509 (styret af phar.require_hash i php.ini) |
| Eksekveringsmetode | Køres direkte med `php app.phar`; ingen udpakning påkrævet |
| Krav til oprettelse | `phar.readonly=0` skal være indstillet i php.ini for at oprette eller ændre Phar-filer under kørsel |
| Internt layout | PHP-stub + binært manifest (filliste, API-version, flag) + fildata + valgfri signaturblok |
| Byte-orden | Little-endian |
| Typisk størrelse | Ti-tals KB til ti-tals MB (f.eks. composer.phar ~2 MB, phpunit.phar ~3 MB) |
| PHP-versionsunderstøttelse | Bundtet som standard siden PHP 5.3 (2009); vedligeholdt gennem PHP 8.x |
| Sikkerhedsrisiko | Phar-deserialisering via `phar://` stream-wrapper på angriber-kontrollerede stier kan udløse objekt-injektion RCE |
| Understøttede payload-layouts | Flat Phar, tar-baseret Phar eller zip-baseret Phar (PHP vælger formatet ud fra manifestet) |
| Udgivet | 2008 (Phar extension bundled in PHP 5.3) |
| Seneste version | Maintained as a core PHP extension (current through PHP 8.x) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.php.net |
PHAR-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om PHAR-filer.
Ofte stillede spørgsmål
Hvordan kører jeg en PHAR-fil?
php tool.phar. På Linux/macOS kan du også bruge chmod +x tool.phar && ./tool.phar, hvis den har en shebang. Dobbeltklik fungerer normalt ikke.Hvad er en PHAR-fil?
Hvordan åbner jeg en PHAR for at se indholdet?
Er det sikkert at køre en PHAR-fil?
Hvorfor vil min PHAR ikke køre - 'phar.readonly' fejl?
Kan jeg lave en PHAR om til en EXE?
php tool.phar, eller bundt PHP med din Phar ved hjælp af en dedikeret packager, hvis du virkelig har brug for en selvstændig .exe.