This is a very irritating bug. You can use this to get around it though:
$data = 'some.test.string';
$phar = new PharData('test.tar');
$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::compress — Comprimir el archivo tar/zip entero usando la compresión Gzip o Bzip2
Para archivos tar, este método comprime el archivo entero usando la compresión gzip o bzip2. El fichero resultante puede ser procesado con el comando gunzip/bunzip, o se puede acceder a él directa y transparentemente con la extensión Phar.
Para archivos phar basados en Zip, este método falla con el lanzamiento de una excepción. La extensión zlib debe estar habilitada para poder comprimir con la compresión gzip, y la extensión bzip2 debe estar habilitada para poder comprimir con la compresión bzip2.
Además, este método renombra automáticamente el archivo, añadiéndole .gz
,
.bz2
o eliminado la extensión si se pasa Phar::NONE
para
eliminar la compresión. De forma alternativa, se puede expecificar una extensión de fichero con el segundo
parámetro.
compression
La compresión debe ser Phar::GZ
o
Phar::BZ2
para añadir compresión, o Phar::NONE
para eliminarla.
extension
Por omisión, la extensión es .tar.gz
o .tar.bz2
para comprimir un tar, y .tar
para descomprimirlo.
Devuelve un objeto de la clase PharData.
Lanza una excepción de tipo BadMethodCallException si la extensión zlib no está disponible, o la extensión bzip2 no está habilitada.
Ejemplo #1 Un ejemplo de PharData::compress()
<?php
$p = new PharData('/ruta/a/mi.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // copia a /ruta/a/mi.tar.gz
$p2 = $p->compress(Phar::BZ2); // copia a /ruta/a/mi.tar.bz2
$p3 = $p2->compress(Phar::NONE); // excepción: /ruta/a/mi.tar ya existe
?>
This is a very irritating bug. You can use this to get around it though:
$data = 'some.test.string';
$phar = new PharData('test.tar');
$phar->compress(Phar::GZ, substr($data, strpos($data, '.') + 1));
This method destroys everything after the first dot in your filename and replaces it with the zip extension (.tar.gz, etc)
Example:
<?php
$tarfile = "2.5.0.0-RC1.tar";
$pd = new \PharData($tarfile);
$pd->buildFromDirectory("/path/to/contents");
$pd->compress(\Phar::GZ);
?>
Ends up with a file named "2.tar.gz"