On 29.04.2022 at 06:51, Dennis Gearon wrote: > running in CLI mode. readonly for Phars is set to 'off' > If I do $p->extractTo() BEFORE compressing it, I ca the right results when > I do > cat *.txt in directory extracted to. But if I compress it and then > decompress it, I get garbage. > > ------------------------------------------------------------------------- > CODE > ---------------------------------------------------------------------------- > > <?php > $p = new Phar('/home/gearond/my.phar', FilesystemIterator::SKIP_DOTS | > FilesystemIterator::UNIX_PATHS, 'my.phar'); > $p['myfile.txt'] = 'four score and seven years ago our fathers.'; > $p['myfile2.txt'] = 'four score and severn years ago our mothers.'; > foreach ($p as $file) { > var_dump($file->getFileName()); > var_dump($file->isCompressed()); > var_dump($file->isCompressed(Phar::BZ2)); > var_dump($file->isCompressed(Phar::GZ)); > } > var_dump($p->getSupportedCompression() ); > var_dump( $p->compressFiles(Phar::GZ) ); > foreach ($p as $file) { > var_dump($file->getFileName()); > var_dump($file->isCompressed()); > var_dump($file->isCompressed(Phar::BZ2)); > var_dump($file->isCompressed(Phar::GZ)); > } > var_dump( $p->decompressFiles() ); > foreach ($p as $file) { > var_dump($file->getFileName()); > var_dump($file->isCompressed()); > var_dump($file->isCompressed(Phar::BZ2)); > var_dump($file->isCompressed(Phar::GZ)); > } > var_dump( $p->extractTo("./", null, true) ); > ?> > > > --------------------------------------------------------------------------- > RESULTS > ---------------------------------------------------------------------------- > > string(10) "myfile.txt" > bool(false) > bool(false) > bool(false) > string(11) "myfile2.txt" > bool(false) > bool(false) > bool(false) > array(2) { > [0]=> > string(2) "GZ" > [1]=> > string(5) "BZIP2" > } > NULL > string(10) "myfile.txt" > bool(true) > bool(false) > bool(true) > string(11) "myfile2.txt" > bool(true) > bool(false) > bool(true) > bool(true) > string(10) "myfile.txt" > bool(false) > bool(false) > bool(false) > string(11) "myfile2.txt" > bool(false) > bool(false) > bool(false) > bool(true) > > --------------------------------------------------------------------------- > FILE CONTENT > ---------------------------------------------------------------------------- > The results of cat *.txt in the director extracted to are: > > cat *.txt > K�/-R(N�/JUH�KQ(N-K-�S�LM,*VHL�WI��d��K�/-R(N�/JUH�KQ(N-K�S�LM,*VHL�Wɦ%�d�� I can reproduce this. Apparently, the files are neither uncompressed in the phar archive. That looks like a bug. Consider to file a ticket at <https://github.com/php/php-src/issues>. -- Christoph M. Becker