web-dev-qa-db-fra.com

PHP DANSTRA-GZ sans EXEC ()?

Comment allez-y un fichier à PHP sans utiliser exec('tar') ou toute autre commande, à l'aide de pure PHP?

Mon problème est le suivant; J'ai un fichier tar.gz de 26 Mo qui doit être téléchargé sur mon serveur et extrait. J'ai essayé d'utiliser Net2ftp pour l'extraire, mais cela ne prend pas en charge TAR.GZ décompressant après le téléchargement.

J'utilise un hôte Web gratuit, de sorte qu'ils n'autorisent aucune commande exec() et ne permettent pas d'accéder à une invite. Alors, comment voudrais-je aller sur cela?

Est-ce que PHP a-t-il une commande intégrée?

26
Jack Wilsdon

Depuis PHP 5.3.0 Vous n'avez pas besoin d'utiliser Archive_Tar.

Il y a une nouvelle classe à travailler sur les archives de goudron: la classe de Phardata .

Pour extraire une archive (à l'aide de PharData::extractTo() qui fonctionnent comme la ZipArchive::extractTo()):

try {
    $phar = new PharData('myphar.tar');
    $phar->extractTo('/full/path'); // extract all files
} catch (Exception $e) {
    // handle errors
}

Et si vous avez une archive tar.gz, il suffit de le décompresser avant d'extraire (en utilisant PharData::decompress() ):

// decompress from gz
$p = new PharData('/path/to/my.tar.gz');
$p->decompress(); // creates /path/to/my.tar

// unarchive from the tar
$phar = new PharData('/path/to/my.tar');
$phar->extractTo('/full/path');
45
j0k

La poire fournit le Archive_Tar Classe , qui prend en charge les compressions GZIP et BZ2, à condition que vous disposiez des extensions ZLIB et BZ2 chargées, respectivement.

3
netcoder