Używam metody extractTo
klasy PHP PharData
do sprawdzania zawartości pliku phar i uruchamiania niektórych wyników w postaci wyników. Osiągnąłem granice pracy detektywa na poziomie mojego bajtu i miałem nadzieję, że ktoś tutaj pomoże mi to rozwiązać.Jaki format pliku obsługuje PharData :: extractTo Extract Files As?
Szczegóły poniżej, ale ogólnie rzecz biorąc: Kiedy rozpakowuję moje pliki archiwum za pomocą PharData::extractTo
, pliki, które otrzymuję, są zmienne bzip
, ale polecenie bzip2
ich nie lubi. Czy to normalne zachowanie, czy jest to problem z określonym archiwum? (lub możliwa kombinacja PHP/OS, której używam). Czy istnieje sposób na uzyskanie zwykłych plików tekstowych z archiwum phar - czy domyślny tekst powinien być domyślny i mam na myśli dziwne zachowanie systemu?
Konkretnie, kiedy uruchomić komendę
$phar = new Phar('n98-magerun.phar');
$phar->extractTo('/tmp/n98-magerun');
Na mojej OS 10.6.8 Intel oparte Mac za pomocą wbudowanego w PHP 5.3.6, archiwum powodzeniem ekstrakcji do/tmp/N98-magerun teczka.
Archiwum jestem wydobycia can be found here.
Jeśli otworzę dowolny z plików tekstowych wyodrębnionych w BBEdit, widzę poprawną zawartość.
Jednak, jeśli mogę użyć innych narzędzi, takich jak QuickLook, vi
lub cat
widzę danych binarnych. Zauważyłem to, próbując uzyskać ack
/grep
poprzez zawartość plików i nie otrzymałem oczekiwanych rezultatów.
Jeśli użyję komendy file
na pliku, to donosi, że jest to plik bzip
.
$ file MIT-LICENSE.txt
MIT-LICENSE.txt: bzip2 compressed data, block size = 400k
i rozpatrywania plik w edytorze hex potwierdza plik zaczyna się BZ
nagłówku
jednak próbuje rozpakować plik z bzip2
wyników w następujący błąd
$ bzip2 -d MIT-LICENSE.txt
bzip2: Can't guess original name for MIT-LICENSE.txt -- using MIT-LICENSE.txt.out
bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted? *Possible* reason follows.
bzip2: No such file or directory
Input file = MIT-LICENSE.txt, output file = MIT-LICENSE.txt.out
It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.
You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.
bzip2: Deleting output file MIT-LICENSE.txt.out, if it exists.
i mogę bzcat
plik pomyślnie, chociaż to barfs w środku dle pliku z tym
bzcat: Compressed file ends unexpectedly;
perhaps it is corrupted? *Possible* reason follows.
bzcat: Undefined error: 0
Input file = MIT-LICENSE.txt, output file = (stdout)
It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.
You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.
Czy widziałeś komentarz poniżej http://php.net/manual/en/phardata.extractto.php? Mówi o formacie archiwum "pax" na starszych systemach Mac. –
Widziałem to, ale nie jestem pewien, czy śledzę, jak to działa (jeśli w ogóle). Wydaje się twierdzić, że niektóre starsze wersje PHP w systemie Mac OS generują archiwa phara w stylu pax, ale 'extractTo' obsługuje tylko archiwizację wersji ustar. Ponieważ nie generuję archiwum, a archiwum jest poprawnie wyodrębniane, nie jestem pewien, czy jest to istotne. (przez co mam na myśli, jestem dosłownie nie pewna: wcześniej nie włamałem się na rzeczy phara) –
Przepraszam, mam błąd - po pierwszym przeczytaniu zrozumiałem, że to niektóre systemy (i wspomniałem o Mac OS używają) wyodrębnia pliki do archiwum pax ... –