E.Owen
E.Owen

Reputation: 825

Extract folder contents from file.tar using PHP

I am trying to extract the contents of a folder within a tarball using PHP. I am using the following PHP to download and extract the archive:

<?php

function wget($address,$filename) {
    file_put_contents($filename,file_get_contents($address));
}

$newdir = 'test';

echo '<br>Downloading latest gzipped WordPress tarball';

wget('http://wordpress.org/latest.tar.gz', 'latest.tar.gz');

echo '<br>about to Extract from gz';

// decompress from gz
$p = new PharData('latest.tar.gz');
$p->decompress(); // creates files.tar

echo '<br>Extracted from gz';

// unarchive from the tar
$phar = new PharData('latest.tar');
echo '<br>Un-TARd';
$phar->extractTo($newdir); 

echo '<br>Complete';


?>

My problem is that this script extracts the tarball into /test/wordpress whereas I need it to extract to /test/. I have read through this documentation on the PHP.net Manual and replaced part of my code to meet one of the examples there. The code I had was:

$phar->extractTo($newdir);

And I changed that to:

$phar->extractTo($newdir, 'wordpress');

But that didn't work. The PHP script processed through to the end but the /test/ directory was empty. The aim of this is to create a one-click WordPress install on our local dev server.

Upvotes: 0

Views: 1333

Answers (1)

Paweł Kania
Paweł Kania

Reputation: 26

I know the thread is very old and you probably found solution but maybe I'll save someone else time.

Funcion extractTo expects slash at the end of directory name you want to extract.

So $phar->extractTo($newdir, 'wordpress/'); should work.

Upvotes: 1

Related Questions