Как я могу разархивировать файл .gz с PHP? - PullRequest
12 голосов
/ 20 июля 2010

Я использую CodeIgniter и не могу понять, как распаковать файлы!

Ответы [ 5 ]

42 голосов
/ 20 июля 2010

PHP сам по себе имеет ряд функций для работы с файлами gzip.

Если вы хотите создать новый несжатый файл, это будет что-то вроде этого.

Примечание: Это неНе проверяйте, существует ли целевой файл первым, не удаляет входной файл или проверяет ошибки.Вы действительно должны исправить это, прежде чем использовать это в рабочем коде.

// This input should be from somewhere else, hard-coded in this example
$file_name = 'file.txt.gz';

// Raising this value may increase performance
$buffer_size = 4096; // read 4kb at a time
$out_file_name = str_replace('.gz', '', $file_name);

// Open our files (in binary mode)
$file = gzopen($file_name, 'rb');
$out_file = fopen($out_file_name, 'wb');

// Keep repeating until the end of the input file
while(!gzeof($file)) {
    // Read buffer-size bytes
    // Both fwrite and gzread and binary-safe
    fwrite($out_file, gzread($file, $buffer_size));
}

// Files are done, close files
fclose($out_file);
gzclose($file);

Примечание: это относится только к gzip * .Это не относится к смоле.

3 голосов
/ 25 ноября 2013

Если у вас есть доступ к системе ():

system("gunzip file.sql.gz");
3 голосов
/ 20 июля 2010

Используйте функции, реализованные расширением Zlib Compression .

В этом фрагменте показано, как использовать некоторые функции, доступные из расширения:

// open file for reading
$zp = gzopen($filename, "r");

// read 3 char
echo gzread($zp, 3);

// output until end of the file and close it.
gzpassthru($zp);
gzclose($zp);
2 голосов
/ 20 июля 2010

Загрузите библиотеку Unzip и включите или autoload библиотеку unzip

$this->load->library('unzip');
0 голосов
/ 08 сентября 2018

Используйте функцию extractTo из PharData.

$source - это архивный файл .gz, который вы хотите распаковать, и $destDir каталог, в который вы хотите их извлечь.

$phar = new PharData($source);
$phar->extractTo($destDir,null,true); // extract all files, overwrites existing files
...