Hva er PHAR-filformatet?
.phar-filer er assosiert med PHP-utviklingsmiljøet. Et .phar-arkiv er PHP-ekvivalenten til en JAR-fil - den pakker en hel PHP-applikasjon eller et bibliotek inn i en enkelt selvstendig, kjørbar pakke som kan distribueres som én fil.
Hva slags data kan PHAR-filer inneholde?
.phar-arkiver lagrer PHP-skript og eventuelle støtteressurser (maler, konfigurasjoner, ressurser), valgfritt komprimert med gzip eller bzip2 på filnivå eller for hele arkivet. Hver .phar-fil inneholder en kjørbar PHP-stub, et binært manifest som lister opp de pakkede filene med metadata, og en valgfri kryptografisk signatur (MD5, SHA-1, SHA-256, SHA-512 eller OpenSSL) verifisert via phar.require_hash.
Hvordan kan jeg kjøre PHAR-filer?
.phar-filer kan kjøres direkte med PHP-kommandolinjetolkeren: php app.phar. Kjente eksempler inkluderer composer.phar og phpunit.phar. Oppretting eller endring av en Phar programmatisk krever phar.readonly=0 i php.ini, som er satt til 1 (skrivebeskyttet) som standard.
Sikkerhetshensyn angående PHAR-filer
Siden PHP 5.3.0 er Phar-støtte aktivert som standard. Automatisk PHAR-kodekjøring i et PHP-miljø utgjør en alvorlig sikkerhetsrisiko for systemet. Det finnes kjente tilfeller der ondsinnet PHP-kode ble distribuert i PHAR-filer maskert som JPEG eller .txt-filer ved hjelp av enkel endring av filendelse. Å åpne en slik fil kan føre til at systemet blir infisert med ondsinnet programvare. I tillegg kan utløsing av Phar-strøm-wrappere (phar://) på angriperkontrollerte filstier deserialisere innebygd metadata og føre til «object-injection» og ekstern kodekjøring (RCE).
Sikkerhet og trygghet
RISIKO: HIGHEn PHAR er kjørbar PHP-kode, så behandle den som ethvert program: kjør kun Phars fra pålitelige, offisielle kilder (composer.phar fra getcomposer.org, phpunit.phar fra phpunit.de), og verifiser publisert sjekksum/signatur når tilgjengelig. Utover selve kjøringen er Phars en beryktet angrepsvektor på serversiden: phar://-strøm-wrapperen kan deserialisere innebygd metadata, noe som muliggjør PHP «object-injection» / ekstern kodekjøring hvis en applikasjon sender angriperkontrollerte stier til filfunksjoner. Kjør aldri en uoppfordret .phar, og unngå å mate brukerinput inn i funksjoner som kan løse opp phar://-stier på servere.
Formatdetaljer
i et nøtteskallProgrammer som åpner PHAR-filer
php tool.phar (eller php tool.phar --help) for å utføre den. php tool.phar (eller php tool.phar --help) for å utføre den. php tool.phar (eller php tool.phar --help) for å utføre den. Tekniske detaljer
dyp spesifikasjon| Inngangspunkt (stub) | Kjørbar PHP-stub som slutter med `__HALT_COMPILER();`-tokenet, som markerer starten på det binære manifestet |
| Avsluttende signatur-magic | GBMB 4-byte magic i den avsluttende signaturblokken (kun til stede i signerte Phars) |
| Komprimering | Ingen, Zlib (gzip), eller Bzip2 - konfigurerbart per fil eller for hele arkivet |
| Signaturalgoritmer | MD5, SHA-1, SHA-256, SHA-512, eller OpenSSL X.509 (kontrollert av phar.require_hash i php.ini) |
| Kjøringsmetode | Kjøres direkte med `php app.phar`; ingen utpakking nødvendig |
| Krav for opprettelse | `phar.readonly=0` må være satt i php.ini for å opprette eller endre Phar-filer under kjøring |
| Intern layout | PHP-stub + binært manifest (filliste, API-versjon, flagg) + fildata + valgfri signaturblokk |
| Byterekkefølge | Little-endian |
| Typisk størrelse | Fra ti talls KB til ti talls MB (f.eks. composer.phar ~2 MB, phpunit.phar ~3 MB) |
| Støtte for PHP-versjon | Inkludert som standard siden PHP 5.3 (2009); vedlikeholdt gjennom PHP 8.x |
| Sikkerhetsrisiko | Phar-deserialisering via `phar://`-strøm-wrapper på angriperkontrollerte stier kan utløse «object-injection» RCE |
| Støttede payload-layouter | Flat Phar, tar-basert Phar, eller zip-basert Phar (PHP velger formatet fra manifestet) |
| Utgitt | 2008 (Phar extension bundled in PHP 5.3) |
| Siste versjon | Maintained as a core PHP extension (current through PHP 8.x) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | www.php.net |
PHAR-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om PHAR-filer.
Ofte stilte spørsmål
Hvordan kjører jeg en PHAR-fil?
php tool.phar. På Linux/macOS kan du også bruke chmod +x tool.phar && ./tool.phar hvis den har en shebang. Dobbeltklikk fungerer vanligvis ikke.Hva er en PHAR-fil?
Hvordan åpner jeg en PHAR for å se innholdet?
Er det trygt å kjøre en PHAR-fil?
Hvorfor kjører ikke min PHAR - «phar.readonly»-feil?
Kan jeg gjøre om en PHAR til en EXE?
php tool.phar, eller pakk PHP sammen med Pharen ved hjelp av en dedikert pakker hvis du virkelig trenger en frittstående .exe.