Ich benutze die extractTo
Methode der PHP PharData
Klasse, um den Inhalt einer Phar-Datei zu untersuchen und in einige stabile Ergebnisse zu laufen. Ich habe die Grenzen meiner Detektivarbeit auf Byte-Ebene erreicht und hoffte, dass jemand hier in der Lage sein würde, mir dabei zu helfen, das herauszufinden.Welches Dateiformat enthält PharData :: extractTo um Dateien zu extrahieren?
Einzelheiten folgen, aber im Allgemeinen: Wenn ich meine Archivdateien mit PharData::extractTo
extrahieren, die Dateien, die ich appeart raus ein bzip
varient sein, aber der bzip2
Befehl ihnen nicht gefällt. Ist das normal phar
Verhalten, oder ist es ein Problem mit dem spezifischen Archiv? (oder die PHP/OS-Kombination, die ich verwende). Gibt es eine Möglichkeit, einfache Textdateien aus einem Phar-Archiv zu holen - oder sollte reiner Text der Standard sein und ich betrachte das seltsame Systemverhalten?
Genauer gesagt, wenn ich den Befehl ausführen
$phar = new Phar('n98-magerun.phar');
$phar->extractTo('/tmp/n98-magerun');
Auf meinem O 10.6.8, Intel-basierten Mac in PHP 5.3.6 der eingebauten verwenden, das Archiv erfolgreich in das Verzeichnis/tmp/n98-magerun extrahiert Mappe.
Das Archiv I can be found here Extrahieren sind.
Wenn ich eine der in BBEdit extrahierten Textdateien öffne, sehe ich den richtigen Inhalt.
jedoch, wenn ich andere Tools wie Quicklook, vi
oder cat
, sehe ich Binärdaten. Ich bemerkte dies beim Versuch, ack
/grep
durch den Inhalt der Dateien und ich bekam nicht die Ergebnisse, die ich erwartet hatte.
Wenn ich den file
Befehl auf die Datei verwenden, wird es berichtet, dass es eine bzip
Datei.
$ file MIT-LICENSE.txt
MIT-LICENSE.txt: bzip2 compressed data, block size = 400k
und die Datei mit einem Hex-Editor Prüfung bestätigt die Datei mit einem BZ
Header beginnt
jedoch
$ 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.
die Datei mit
bzip2
Ergebnissen in dem folgenden Fehler zu dekomprimieren Versuch
und ich kann bzcat
die Datei erfolgreich, obwohl es in der Mitte barfs dle der Datei mit diesem
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.
Haben Sie den Kommentar unter http://php.net/manual/en/phardata.extractto.php gesehen? Es sagt über 'pax' Archivformat auf älteren Mac-Systemen. –
Ich habe das gesehen, aber ich bin mir nicht sicher, ob ich dem Beispiel (wenn überhaupt) folge. Es scheint so zu sein, dass einige ältere Mac OS-Versionen von PHP Pax-artige Phar-Archive generieren, aber 'extractTo' unterstützt nur das Auslagern der ustar-Variante. Da ich das Archiv nicht erzeuge und das Archiv korrekt extrahiert, bin ich mir nicht sicher, ob es relevant ist. (womit ich meine, ich bin mir eigentlich nicht sicher: Ich habe noch nie Phar-Sachen gehackt) –
Sorry, ich habe mich geirrt - nach dem ersten Lesen habe ich es als einige Systeme verstanden (und Mac OS, das du erwähnt hast) verwenden) extrahiert Phar in Pax-Archive ... –