2011-09-06 43 views
5

Tôi đang cố gắng giải nén tập tin tar vào một thư mục, nhưng không biết làm thế nào. Tôi có thể giải nén nó vào cùng một thư mục với tập tin tar, nhưng không phải vào một thư mục khác.Giải nén tập tin tar vào thư mục

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

đã thử những điều sau đây, nhưng nó không hoạt động (không có gì đã được chiết xuất):

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

Cập nhật:

Đây là nội dung của tập tin của tôi:

# 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"); 

Không có lỗi, nhưng không có gì đang được giải nén.

+0

Có phải pear tar được cài đặt trên máy chủ web của bạn không? – Mythli

+0

thử truyền một mảng trống làm tham số thứ hai và sau đó kiểm tra nội dung của mảng đó. Nó sẽ cho bạn thấy tất cả các đầu ra có thể cung cấp cho bạn một đầu mối về những gì đang xảy ra. xem: http://us3.php.net/manual/en/function.exec.php – gregghz

+0

Tôi đã thử điều đó, trả về rỗng $ status = array(); exec ("tar -C $ folderpath -zxvf $ filepath", $ status); print_r ($ status); –

Trả lời

3

Tháo dấu phẩy từ C và thêm dấu gạch ngang trước zxvf:

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

Hoặc bạn có thể đặt một phần C ở cuối dòng và bạn không cần phải dấu gạch ngang trước zxvf:

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

Và bạn có thể chắc chắn rằng đường dẫn của bạn là tuyệt đối, chỉ để chắc chắn.

+0

Nhận được điều này trong error_log của tôi: [06-Sep-2011 14:39:11] PHP Cảnh báo: Module 'json' đã được tải trong Không xác định trên dòng 0 –

Các vấn đề liên quan