zlib://

bzip2://

zip://

zlib:// -- bzip2:// -- zip://Сжатые потоки

Описание

zlib: PHP 4.0.4 - PHP 4.2.3 (только на системах с fopencookie)

compress.zlib:// и compress.bzip2:// PHP 4.3.0 и выше

zlib: работает как gzopen() за исключением того, что этот поток может использоваться функцией fread() и другими функциями, работающими с файловой системой. Устарела начиная с PHP 4.3.0 ввиду неоднозначности при наличии файлов, содержащих ':'; используйте взамен compress.zlib://.

compress.zlib:// и compress.bzip2:// соответствуют gzopen() и bzopen() соответственно и работают даже в системах, не поддерживающих fopencookie.

ZIP-модуль добавляет обертку zip:.

Использование

  • compress.zlib://file.gz
  • compress.bzip2://file.bz2
  • zip://archive.zip#dir/file.txt

Опции

Основная информация
Атрибут Поддержка
Ограничение по allow_url_fopen Нет
Чтение Да
Запись Да (кроме zip://)
Добавление Да (кроме zip://)
Чтение и запись одновременно Нет
Поддержка stat() Нет, используйте стандартную обертку file:// для получения информации по сжатым файлам.
Поддержка unlink() Нет, используйте стандартную обертку file:// для удаления сжатых файлов.
Поддержка rename() Нет
Поддержка mkdir() Нет
Поддержка rmdir() Нет

Коментарии

I had a difficult time finding how to use compress.zlib with an http resource so I thought I would post what I found
<?php
$file 
'compress.zlib://http://www.example.com/myarchive.gz';
$fr fopen($file'rb');
?>

Per the bugreport I found here (http://bugs.php.net/bug.php?id=29045)
2007-08-19 15:24:17
http://php5.kiev.ua/manual/ru/wrappers.compression.html
Example on how to read an entry from a ZIP archive (file "bar.txt" inside "./foo.zip"):

<?php

$fp 
fopen('zip://./foo.zip#bar.txt''r');
if( 
$fp ){
    while( !
feof($fp) ){
        echo 
fread($fp8192);
    }
   
fclose($fp);
}

?>

Also, apparently, the "zip:" wrapper does not allow writing as of PHP/5.3.6. You can read http://php.net/ziparchive-getstream for further reference since the underlying code is probably the same.
2011-04-12 10:41:33
http://php5.kiev.ua/manual/ru/wrappers.compression.html
@alvaro at demogracia dot com

well in fact that is wrong!
right code is:

<?php 

$fp 
fopen('compress.zip://./foo.zip#bar.txt''r'); 
if( 
$fp ){ 
    while( !
feof($fp) ){ 
        echo 
fread($fp8192); 
    } 
   
fclose($fp); 


?> 

as you might see you just have to add a "compress."

maybe when you posted this note is was right (2 years ago) but today its wrong... :/

sry for my english i am german :)
2013-09-19 20:00:59
http://php5.kiev.ua/manual/ru/wrappers.compression.html
Prior to PHP 5.6 i used code like 
<?php
file_get_contents
("compress.zlib://php://input");
?>
to read gz-compressed or plain input file. Not it doesn't work.
Simple workaround :
<?php
//file_get_contents("compress.zlib://php://input");

class gzip_header_filter8 extends php_user_filter {
    private 
$filtered 0;
    public function 
filter($in$out, &$consumed$closing) {
        while (
$bucket stream_bucket_make_writeable($in)) {
            if(
$this->filtered == 0) {
               
$header_len 8;
               
$header substr($bucket->data08);
               
$flags ord($header[1]);
                if(
$flags 0x08) {
                   
// a filename is present
                   
$header_len strpos($bucket->data"\0"8) + 1;
                }
               
$bucket->data substr($bucket->data$header_len);
               
$this->filtered $header_len;
            }
           
$consumed += $bucket->datalen;
           
stream_bucket_append($out$bucket);
        }
        return 
PSFS_PASS_ON;
    }
}

stream_filter_register('gzip_header_filter8''gzip_header_filter8');

$READ_LEN 64*1024;
$MAX_BUF_LEN $READ_LEN*1024;

$mode_plain=true;
$src=fopen("php://input","rb"); //test if OK!!!!
$magic_number=fread($src,2);
$input="";
    if(
strlen($magic_number)==2)
        if(
            (
ord($magic_number[0])==31)
        &&  (
ord($magic_number[1])==139)
            )
        {
       
$mode_plain=false;
       
stream_filter_append($src"gzip_header_filter8"STREAM_FILTER_READ);
       
stream_filter_append($src"zlib.inflate"STREAM_FILTER_READ);
        }
else
        {
       
$input=$magic_number;
        }

/* read starts here*/
 
$k 0;
 while (!
feof($src) && $k <= $MAX_BUF_LEN) {
     
$inp fread($src,$READ_LEN);
     
$k += strlen($inp);
     
$input.=$inp;
    }
echo 
$input;
fclose($src);
?>
2015-12-10 15:13:40
http://php5.kiev.ua/manual/ru/wrappers.compression.html
Автор:
One-liners to gzip and ungzip a file:

copy('file.txt', 'compress.zlib://' . 'file.txt.gz');

copy('compress.zlib://' . 'file.txt.gz', 'file.txt');
2017-02-03 15:56:43
http://php5.kiev.ua/manual/ru/wrappers.compression.html
This is the solution how to read stream from zip:

$fp = fopen('zip://foo.zip#bar.txt', 'r');
if( $fp ){
    while( !feof($fp) ){
        echo fread($fp, 8192);
    }
    fclose($fp);
}
2019-12-05 15:17:01
http://php5.kiev.ua/manual/ru/wrappers.compression.html

    Поддержать сайт на родительском проекте КГБ