Как я могу разархивировать файл.gz с PHP?
Я использую CodeIgniter и не могу понять, как распаковать файлы!
5 ответов
Загрузите библиотеку Unzip и включите или autoload
unzip
библиотека
$this->load->library('unzip');
Сам 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. Это не касается смолы.
Gzopen - это слишком много работы. Это более интуитивно понятно:
$zipped = file_get_contents("foo.gz");
$unzipped = gzdecode($zipped);
работает на http-страницах, когда сервер также выдает сжатые данные.
Если у вас есть доступ к системе ():
system("gunzip file.sql.gz");
Используйте функции, реализованные расширением 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);
Использовать extractTo
функция отPharData
,
$source
файл архива.gz, который вы хотите распаковать и $destDir
каталог, в который вы хотите извлечь их.
$phar = new PharData($source);
$phar->extractTo($destDir,null,true); // extract all files, overwrites existing files