Vad är filformatet PHAR?
.phar-filer är associerade med PHP-utvecklingsmiljön. Ett .phar-arkiv är PHP-motsvarigheten till en JAR-fil - det paketerar en hel PHP-applikation eller ett bibliotek i ett enda självständigt, körbart paket som kan distribueras som en fil.
Vilken typ av data kan PHAR-filer innehålla?
.phar-arkiv lagrar PHP-skript och alla tillhörande resurser (mallar, konfigurationer, resurser), valfritt komprimerade med gzip eller bzip2 på filnivå eller för hela arkivet. Varje .phar-fil innehåller en körbar PHP-stub, ett binärt manifest som listar de paketerade filerna med metadata, och en valfri kryptografisk signatur (MD5, SHA-1, SHA-256, SHA-512 eller OpenSSL) som verifieras via phar.require_hash.
Hur kan jag köra PHAR-filer?
.phar-filer kan köras direkt med PHP-kommandotolken: php app.phar. Välkända exempel inkluderar composer.phar och phpunit.phar. Att skapa eller modifiera en Phar programmatiskt kräver phar.readonly=0 i php.ini, vilket som standard är inställt på 1 (skrivskyddad).
Säkerhetsaspekter gällande PHAR-filer
Sedan PHP 5.3.0 är Phar-stöd aktiverat som standard. Automatisk PHAR-kodexekvering i en PHP-miljö innebär allvarliga systemsäkerhetsrisker. Det finns kända fall där skadlig PHP-kod har distribuerats i PHAR-filer maskerade som JPEG- eller .txt-filer genom enkelt byte av filändelse. Att öppna en sådan fil kan leda till att systemet infekteras med skadlig programvara. Dessutom kan triggning av Phar-strömomslag (phar://) på filsökvägar som kontrolleras av en angripare deserialisera inbäddad metadata och leda till fjärrstyrd kodexekvering via objektinjektion.
Säkerhet & trygghet
RISK: HIGHEn PHAR är körbar PHP-kod, så hantera den som vilket program som helst: kör endast Phars från betrodda, officiella källor (composer.phar från getcomposer.org, phpunit.phar från phpunit.de), och verifiera publicerad kontrollsumma/signatur när sådan finns. Utöver att köras är Phars en känd attackvektor på serversidan: strömomslaget phar:// kan deserialisera inbäddad metadata, vilket möjliggör PHP-objektinjektion / fjärrstyrd kodexekvering om en applikation skickar användarkontrollerade sökvägar till filfunktioner. Kör aldrig en oombedd .phar, och undvik på servrar att mata in användardata i funktioner som kan matcha phar://-sökvägar.
Formatdetaljer
i ett nötskalProgram som öppnar PHAR-filer
php tool.phar (eller php tool.phar --help) för att exekvera den. php tool.phar (eller php tool.phar --help) för att exekvera den. php tool.phar (eller php tool.phar --help) för att exekvera den. Tekniska detaljer
djup specifikation| Ingångspunkt (stub) | Körbar PHP-stub som slutar med token `__HALT_COMPILER();`, vilket markerar starten på det binära manifestet |
| Avslutande signatur-magic | GBMB 4-byte magic i det avslutande signaturblocket (finns endast i signerade Phars) |
| Komprimering | Ingen, Zlib (gzip), eller Bzip2 - konfigurerbart per fil eller för hela arkivet |
| Signaturalgoritmer | MD5, SHA-1, SHA-256, SHA-512, eller OpenSSL X.509 (styrs av phar.require_hash i php.ini) |
| Exekveringsmetod | Körs direkt med `php app.phar`; ingen extrahering krävs |
| Krav för skapande | `phar.readonly=0` måste vara inställt i php.ini för att skapa eller modifiera Phar-filer vid körning |
| Intern layout | PHP-stub + binärt manifest (fillista, API-version, flaggor) + fildata + valfritt signaturblock |
| Byteordning | Little-endian |
| Typisk storlek | Tiotals KB till tiotals MB (t.ex. composer.phar ~2 MB, phpunit.phar ~3 MB) |
| Stöd för PHP-versioner | Inbyggt som standard sedan PHP 5.3 (2009); underhålls genom PHP 8.x |
| Säkerhetsrisk | Phar-deserialisering via `phar://`-strömomslag på sökvägar kontrollerade av angripare kan trigga objektinjektion RCE |
| Sökvägslayouter som stöds | Flat Phar, tar-baserad Phar, eller zip-baserad Phar (PHP väljer formatet utifrån manifestet) |
| Släppt | 2008 (Phar extension bundled in PHP 5.3) |
| Senaste version | Maintained as a core PHP extension (current through PHP 8.x) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.php.net |
PHAR-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om PHAR-filer.
Vanliga frågor
Hur kör jag en PHAR-fil?
php tool.phar. På Linux/macOS kan du även använda chmod +x tool.phar && ./tool.phar om den har en shebang. Att dubbelklicka fungerar vanligtvis inte.Vad är en PHAR-fil?
Hur öppnar jag en PHAR för att se innehållet?
Är det säkert att köra en PHAR-fil?
Varför körs inte min PHAR - 'phar.readonly'-fel?
Kan jag göra om en PHAR till en EXE?
php tool.phar, eller paketera PHP tillsammans med din Phar med en dedikerad packare om du verkligen behöver en fristående .exe.