*.tar.gz mit PHP entpacken
Walter
- php
Hallo!
Die Datei "zahlen.tar.gz" enthält folgende Dateien:
1.txt
2.txt
3.txt
Folgendes PHP Script wird ausgeführt:
<pre>
<?php echo system('tar xzvf zahlen.tar.gz'); ?>
</pre>
Die Ausgabe im Browser sieht so aus:
zahlen/
zahlen/1.txt
zahlen/2.txt
zahlen/3.txt
zahlen/3.txt
Warum steht da zwei mal die Zeile mit 3.txt ?
3.txt wird scheinbar zwei mal entpackt.
Ich habe es auch schon mit anderen *.tar.gz Archiven probiert,
die letzte Datei die entpackt wird, wird immer doppelt angeführt.
In der Shell passiert der Fehler nicht.
Ausgabe der Shell:
zahlen/
zahlen/1.txt
zahlen/2.txt
zahlen/3.txt
Was ist da los, wie verhindere ich dass das PHP Script
die letzte Datei immer scheinbar doppelt entpackt?
Ist "system" vielleicht der falsche Befehl?
Danke, Werner
Holladiewaldfee,
Warum steht da zwei mal die Zeile mit 3.txt ?
3.txt wird scheinbar zwei mal entpackt.
Hm, nicht ganz einfach ;-)
Prinzipiell sollte system() nur die letzte Zeile der Ausgabe zurückgeben. Allerdings scheint es, als würde zunächst die Ausgabe nach STDOUT des Programms an PHP weitergegeben, das die Sache dann einfach weiter an den Browser schickt. Die letzte Zeile schließlich (also die doppelte) sollte das eigentliche Ergenis des echo sein.
Probier doch mal, was passiert wenn Du das echo weglässt:
<pre>
<?php system('tar xzvf zahlen.tar.gz'); ?>
</pre>
Wenn ich richtig liege sollte dann die doppelte letzte Zeile verschwinden.
http://de3.php.net/manual/en/function.system.php
Ciao,
Harry
Hi,
die Option -v zeigt sämtliche entpackten Dateien in der Console an. Wenn du das weglässt, wird gar nix mehr von den Dateinamen angezeigt.
Ansonsten, wie schon gesagt, das echo weglassen, da system() in diesem Fall schon selbst eine Ausgabe erzeugt und die letze Zeile der eigentliche Rückgabewert ist.