web-dev-qa-db-ja.com

PHP exec()なしのUntar-gz?

純粋なPHPを使用して、exec('tar')または他のコマンドを使用せずに、phpでファイルをuntar-gzするにはどうすればよいですか?

私の問題は次のとおりです。 26mbのtar.gzファイルがあり、サーバーにアップロードして抽出する必要があります。 net2ftpを使用して抽出しようとしましたが、アップロード後のtar.gzの解凍はサポートされていません。

私は無料のWebホストを使用しているため、exec()コマンドを許可しておらず、プロンプトへのアクセスも許可していません。それで、これを解凍する方法は?

PHPには組み込みコマンドがありますか?

26
Jack Wilsdon

PHP 5.3.0なので、_Archive_Tar_を使用する必要はありません。

Tarアーカイブで動作する新しいクラス The PharDataクラス があります。

アーカイブを抽出するには( PharData::extractTo() を使用して、ZipArchive::extractTo()のように機能します):

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

Tar.gzアーカイブがある場合は、解凍する前に解凍するだけです( 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

PEARは Archive_Tar class 。これは、Gzip圧縮とBZ2圧縮の両方をサポートします。ただし、zlib拡張機能とbz2拡張機能がそれぞれ読み込まれている必要があります。

3
netcoder