Co to jest format pliku PHAR?
Pliki .phar są powiązane ze środowiskiem programistycznym PHP. Archiwum .phar jest odpowiednikiem pliku JAR w PHP - pakuje całą aplikację lub bibliotekę PHP w jeden samodzielny, wykonywalny pakiet, który może być dystrybuowany jako pojedynczy plik.
Jakie dane mogą zawierać pliki PHAR?
Archiwa .phar przechowują skrypty PHP i wszelkie zasoby pomocnicze (szablony, konfiguracje, zasoby), opcjonalnie skompresowane za pomocą gzip lub bzip2 dla poszczególnych plików lub całego archiwum. Każdy plik .phar zawiera wykonywalny stub PHP, binarny manifest zawierający listę spakowanych plików wraz z metadanymi oraz opcjonalną sygnaturę kryptograficzną (MD5, SHA-1, SHA-256, SHA-512 lub OpenSSL) weryfikowaną przez phar.require_hash.
Jak mogę uruchomić pliki PHAR?
Pliki .phar można uruchamiać bezpośrednio za pomocą interpretera wiersza poleceń PHP: php app.phar. Znane przykłady to composer.phar i phpunit.phar. Programowe tworzenie lub modyfikowanie plików Phar wymaga ustawienia phar.readonly=0 w php.ini, które domyślnie jest ustawione na 1 (tylko do odczytu).
Kwestie bezpieczeństwa dotyczące plików PHAR
Od wersji PHP 5.3.0 obsługa Phar jest domyślnie włączona. Automatyczne wykonywanie kodu PHAR w środowisku PHP stwarza poważne ryzyko dla bezpieczeństwa systemu. Znane są przypadki, w których złośliwy kod PHP był dystrybuowany w plikach PHAR maskowanych jako pliki JPEG lub .txt przy użyciu prostej zmiany rozszerzenia. Otwarcie takiego pliku może spowodować zainfekowanie systemu złośliwym oprogramowaniem. Dodatkowo, wywołanie wrapperów strumienia Phar (phar://) na ścieżkach plików kontrolowanych przez atakującego może spowodować deserializację osadzonych metadanych i doprowadzić do zdalnego wykonania kodu (RCE) poprzez wstrzyknięcie obiektu.
Bezpieczeństwo
RYZYKO: HIGHPHAR to wykonywalny kod PHP, więc traktuj go jak każdy program: uruchamiaj tylko pliki Phar z zaufanych, oficjalnych źródeł (composer.phar z getcomposer.org, phpunit.phar z phpunit.de) i weryfikuj opublikowaną sumę kontrolną/podpis, jeśli są dostępne. Poza samym uruchamianiem, pliki Phar są znanym wektorem ataków po stronie serwera: wrapper strumienia phar:// może deserializować osadzone metadane, umożliwiając wstrzyknięcie obiektu PHP / zdalne wykonanie kodu, jeśli aplikacja przekazuje ścieżki kontrolowane przez atakującego do funkcji plikowych. Nigdy nie uruchamiaj niezamówionych plików .phar, a na serwerach unikaj przekazywania danych wejściowych użytkownika do funkcji, które mogą rozwiązywać ścieżki phar://.
Szczegóły formatu
w pigułceProgramy otwierające pliki PHAR
php tool.phar (lub php tool.phar --help), aby go wykonać. php tool.phar (lub php tool.phar --help), aby go wykonać. php tool.phar (lub php tool.phar --help), aby go wykonać. Szczegóły techniczne
specyfikacja| Punkt wejścia (stub) | Wykonywalny stub PHP kończący się tokenem `__HALT_COMPILER();`, który oznacza początek binarnego manifestu |
| Końcowa sygnatura magiczna | 4-bajtowa sygnatura GBMB w końcowym bloku podpisu (obecna tylko w podpisanych plikach Phar) |
| Kompresja | Brak, Zlib (gzip) lub Bzip2 - konfigurowalna dla poszczególnych plików lub całego archiwum |
| Algorytmy podpisu | MD5, SHA-1, SHA-256, SHA-512 lub OpenSSL X.509 (kontrolowane przez phar.require_hash w php.ini) |
| Metoda wykonywania | Uruchamianie bezpośrednio za pomocą `php app.phar`; nie wymaga wypakowywania |
| Wymagania dotyczące tworzenia | W php.ini musi być ustawione `phar.readonly=0`, aby tworzyć lub modyfikować pliki Phar w czasie wykonywania |
| Układ wewnętrzny | Stub PHP + binarny manifest (lista plików, wersja API, flagi) + dane plików + opcjonalny blok podpisu |
| Kolejność bajtów | Little-endian |
| Typowy rozmiar | Od kilkunastu KB do kilkunastu MB (np. composer.phar ~2 MB, phpunit.phar ~3 MB) |
| Obsługa wersji PHP | Dołączany domyślnie od PHP 5.3 (2009); utrzymywany w PHP 8.x |
| Ryzyko bezpieczeństwa | Deserializacja Phar poprzez wrapper strumienia `phar://` na ścieżkach kontrolowanych przez atakującego może wywołać RCE poprzez wstrzyknięcie obiektu |
| Obsługiwane układy ładunku | Płaski Phar, Phar oparty na tar lub Phar oparty na zip (PHP wybiera format na podstawie manifestu) |
| Wydano | 2008 (Phar extension bundled in PHP 5.3) |
| Najnowsza wersja | Maintained as a core PHP extension (current through PHP 8.x) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.php.net |
Konwersje PHAR
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PHAR.
Najczęściej zadawane pytania
Jak uruchomić plik PHAR?
php tool.phar. W systemach Linux/macOS można również użyć chmod +x tool.phar && ./tool.phar, jeśli plik posiada shebang. Podwójne kliknięcie zazwyczaj nie zadziała.Co to jest plik PHAR?
Jak otworzyć PHAR, aby zobaczyć zawartość?
Czy uruchamianie pliku PHAR jest bezpieczne?
Dlaczego mój PHAR się nie uruchamia - błąd „phar.readonly”?
phar.readonly=0 w php.ini. Jeśli chcesz go tylko uruchomić, to ustawienie nie jest potrzebne.Czy mogę zamienić PHAR na EXE?
php tool.phar lub dołącz PHP do pliku Phar za pomocą dedykowanego pakietera, jeśli naprawdę potrzebujesz samodzielnego pliku .exe.