2011-09-06 11 views
5

Próbuję zdekompresować plik tar do katalogu, ale nie mam pojęcia jak. Mogę wyodrębnić go do tego samego katalogu, co plik tar, ale nie do innego folderu.Dekompresuj plik tar do katalogu

$filename = "homedir.tar"; 
exec("tar xvf $filename"); 

Próbowałem następujących, ale nie działa (nic nie jest wyodrębniony):

exec("tar -C, homedir zxvf $filename"); 

Aktualizacja:

Jest to zawartość mojego pliku:

# Absolute paths 
$filepath = "/home/acc/public_html/test/test/homedir.tar"; 
$folderpath = "/home/acc/public_html/test/test/homedir"; 

# Check if folder exist 
if(!is_dir($folderpath)) { 
    die('Folder does not exist'); 
} 

# Check if folder is writable 
if(!is_writable($folderpath)) { 
    die('Folder is not writable'); 
} 

# Check if file exist 
if(!file_exists($filepath)) { 
    die('File does not exist'); 
} 

exec("tar -C $folderpath -zxvf $filepath"); 

Brak błędów, ale nic nie jest również dekompresowane.

+0

Czy na Twoim serwerze internetowym zainstalowany jest grusz? – Mythli

+0

spróbuj podać pustą tablicę jako drugi parametr, a następnie sprawdź zawartość tej tablicy. Pokaże ci wszystkie dane wyjściowe, które mogą dać ci wskazówkę, co dzieje się źle. zobacz: http://us3.php.net/manual/en/function.exec.php – gregghz

+0

Próbowałem tego, zwracając pusty $ status = array(); exec ("tar-$ folderpath -zxvf $ filepath", $ status); print_r ($ status); –

Odpowiedz

3

Usuń przecinek z -C i dodać myślnik przed zxvf:

exec("tar -C $outdir -zxvf $infile"); 

Albo można umieścić -C część na końcu i nie trzeba kreskę przed zxvf:

exec("tar zxvf $infile -C $outdir"); 

Powinieneś się upewnić, że twoje ścieżki są absolutne, aby być pewnym.

+0

Jak to zrobić w moim error_log: [06-wrz-2011 14:39:11] Ostrzeżenie PHP: Moduł 'json' już załadowany w Unknown w linii 0 –