CascadiaPHP 2024

zlib://

bzip2://

zip://

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

Описание

compress.zlib:// и compress.bzip2://

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

Обёртки compress.zlib:// и compress.bzip2:// эквиваленты функциям gzopen() и bzopen() соответственно и работают даже в системах, которые не поддерживают fopencookie.

Модуль ZIP добавляет обёртку zip:. Начиная с PHP 7.2.0 и libzip 1.2.0+ добавили поддержку паролей для зашифрованных архивов, разрешая предоставлять пароли через контексты потоков. Пароли можно установить через контекстную опцию 'password'.

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

  • 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() Нет

Смотрите также

add a note

User Contributed Notes 2 notes

up
18
lewa::cpan.org
7 years ago
One-liners to gzip and ungzip a file:

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

copy('compress.zlib://' . 'file.txt.gz', 'file.txt');
up
11
alvaro at demogracia dot com
13 years ago
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($fp, 8192);
}
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.
To Top