bzip2://
zlib: работает как gzopen() за исключением того, что этот поток может использоваться функцией fread() и другими функциями, работающими с файловой системой. Устарела, ввиду неоднозначности при наличии файлов, содержащих ‘:’; используйте взамен compress.zlib:// .
compress.zlib:// и compress.bzip2:// эквиваленты gzopen() и bzopen() соответственно и работают даже в системах, не поддерживающих fopencookie.
Модуль ZIP добавляет обёртку zip: . Начиная с PHP 7.2.0 и libzip 1.2.0+, была добавлена поддержка паролей для зашифрованных архивов, позволяя предоставлять пароли, используя контексты потоков. Пароли могут быть установлены с помощью контекстной опции ‘password’ .
Использование
Опции
Атрибут | Поддержка |
---|---|
Ограничение по allow_url_fopen | Нет |
Чтение | Да |
Запись | Да (кроме zip:// ) |
Добавление | Да (кроме zip:// ) |
Одновременное чтение и запись | Нет |
Поддержка stat() | Нет, используйте стандартную обёртку file:// для получения информации по сжатым файлам. |
Поддержка unlink() | Нет, используйте стандартную обёртку file:// для удаления сжатых файлов. |
Поддержка rename() | Нет |
Поддержка mkdir() | Нет |
Поддержка rmdir() | Нет |
Смотрите также
User Contributed Notes 6 notes
One-liners to gzip and ungzip a file:
copy(‘file.txt’, ‘compress.zlib://’ . ‘file.txt.gz’);
copy(‘compress.zlib://’ . ‘file.txt.gz’, ‘file.txt’);
Prior to PHP 5.6 i used code like
file_get_contents ( «compress.zlib://php://input» );
?>
to read gz-compressed or plain input file. Not it doesn’t work.
Simple workaround :
//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 -> data , 0 , 8 );
$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 ;
>
Example on how to read an entry from a ZIP archive (file «bar.txt» inside «./foo.zip»):
$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.
I had a difficult time finding how to use compress.zlib with an http resource so I thought I would post what I found
$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)
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);
>
@alvaro at demogracia dot com
well in fact that is wrong!
right code is:
$fp = fopen ( ‘compress.zip://./foo.zip#bar.txt’ , ‘r’ );
if( $fp ) <
while( ! feof ( $fp ) ) <
echo fread ( $fp , 8192 );
>
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 🙂
PHP РАСШИРЕНИЕ ZLIB COMPRESSION ИСПОЛЬЗУЕТСЯ
Расширение zlib compression является одной из наиболее популярных опций по сжатию данных в PHP. Это расширение широко применяется при работе с сетевыми протоколами, когда требуется уменьшить размер передаваемых данных для ускорения процесса передачи и экономии пропускной способности.
Кроме работы с сетевыми протоколами, zlib compression часто используется и в других сценариях, например, при сжатии файлов или в работе с ZIP-архивами. Благодаря высокой эффективности сжатия и легкости настройки, это расширение стало неотъемлемой частью многих PHP-приложений.
Для работы с zlib compression в PHP нужно включить соответствующее расширение в конфигурации PHP, а затем использовать встроенные функции для сжатия и распаковки данных. Например, для сжатия данных можно использовать функцию gzcompress , которая принимает на вход строку данных и возвращает сжатую версию этой строки:
$data = «Lorem ipsum dolor sit amet, consectetur adipiscing elit.»;$compressed = gzcompress($data);echo strlen($data); // 56echo strlen($compressed); // 37
В данном примере мы сжимаем текстовую строку «Lorem ipsum dolor sit amet, consectetur adipiscing elit.» и выводим длину оригинальной строки (56 символов) и длину сжатой строки (37 символов). Как видим, размер данных существенно уменьшился благодаря сжатию с помощью zlib compression.
Автозагрузка классов в PHP
PHP Продвинутый курс ➤ Расширения РНР и их использование. Модули языка PHP
How to Compress Image size using PHP without losing its quality — PHP Programming Tips and Tricks
Основы php. Суперглобальные массивы GET, POST, FILES, REQUEST
Уроки PHP 7 — Подключение файлов. Шаблон страницы. ruphp.come
Создаем изображения в PHP
AVIF и WebP: cкорость декодирования новых форматов
Compress Image Before Upload using PHP
Уроки PHP 7 — Регулярные выражения в PHP
1с-битрикс Администратор. Базовый. Системные требования
1) PHP расширение Zlib compression используется: (несколько вариантов)
+ при работе модуля «Компрессия»
— при построении и отображении графиков и диаграмм
+ при работе «Системы обновлений»
— для корректной работы механизма CAPTCHA
2) Параметр memory_limit может быть установлен: (несколько вариантов)
+ непосредственно в файле php.ini
+ в файле настроек веб-сервера httpd.conf
+ из скрипта с использованием функции ini_set()
+ в файле .htaccess
— в настройках главного модуля
3) При работе с системой в качестве веб-сервера может быть использован: (1 вариант)
— веб-сервер Apach или IIS
+ любой веб-сервер, который может выполнять PHP приложения
— только веб-сервер Apach
4) Библиотека FreeType необходима для корректной работы: (1 вариант)
— диаграмма в модуле опросов
+ механизма CAPTCHA
— графиков и диаграмм в модулях Статистики, Рекламы и др.
5) PHP параметр upload_tmp_dir= определяет: (1 вариант)
— возможность загрузки документов на сайт
— директорию, в которую будут помещаться экспортируемые из системы файлы
+ директорию, в которую будут помещаться временные файлы, загружаемые в систему
6) Возможность управления визуальными темами административного интерфейса реализована за счет использования: (1 вариант)
— Java Script
— RSS
— AJAX
+ CSS
7) Использование строки ini_set(«memory_limit»,»») в файле /bitrix/php_interface/dbconn.php позволяет: (1 вариант)
+ установить максимальный объем памяти, доступный при разработке системы ядру продукта
— определить минимальный объем памяти, неоходимый для работы ядра продукта
— определить максимальный объем памяти, неоходимый для работы ядра продукта
8) Если при установке продукта для выбора не доступна база знаний Oracle это значит, что: (1 вариант)
— используется дистрибутив продукта, не соответствующий лицензионному ключу
+ в PHP не подключено расширение для работы с данной СУБД: php_oci8
— не настроена поддержка ODBC
9) Обработка файлов .htaccess невозможна: (1 вариант)
— PHP установлен как модуль Apache
— при использовании веб-вервера Apache
— PHP установлен как CGI
+ при использовании веб-сервера IIS
— в настройках веб-сервера (httpd.conf) установлена директива AllowOverride All
10) Использование строки php_flag session.use_trans_sid off в файле .htaccess позволяет: (1 вариант)
— указыать, что сохранения файлов сессии будет использоваться директория по умолчанию (т.е. /temp)
— отключить сохранение файлов сессии
+ отключить подстроку параметра PHPSESSID=. В URL
11) Обмен информацией с использованием технологии RSS поддерживается модулями: (несколько вариантов)
+ блоги
— почта
+ форум
+ информационные блоки
— статистика
12) Если при настройке работы с сессиями в PHP не был установлен путь для сохранения файлов сессии, то: (1 вариант)
— по умолчанию для сохранения файлов сессии будет использоваться директория /temp
— файлы сессии сохранены не будут
+ по умолчанию для сохранения файлов сессии будет использовать директория /tmp
13) Продукт поставляется: (1 вариант)
— в различных версиях для разных баз данных
— различаются только дистрибутивы для Oracle XE/MSSQL Express и Oracle/MSSQL
+ единым дистрибутивом для всех баз данных
14) Если при установке продукта для выбора не доступна база данных MSSQL это значит, что: (1 вариант)
+ не настроена поддержка ODBC
— установлена версия MSSQL 2000
— устанавливается дистрибутив с поддержкой только MSSQL Express, а установка произовдится на полную версию СУБД MSSQL
Администратор КП. Системные требования
— при построении и отображении графиков и диаграмм
+ при работе «Системы обновлений»
+ при работе модуля «Компрессия»
— для корректной работы механизма CAPTCHA
2. PHP параметр upload_tmp_dir= определяет:
+ директорию, в которую будут помещаться временные файлы, загружаемые в систему
— возможность загрузки документов на сайт
— директорию, в которую будут помещаться экспортируемые из системы файлы
3. Если при установке продукта для выбора не доступна база данных MSSQL это значит, что
— установлена версия MSSQL 2000
— устанавливается дистрибутив с поддержкой только MSSQL Express, а установка производится на полную версию СУБД MSSQL
+ не настроена поддержка ODBC
4. При работе с системой в качестве веб-сервера может быть использован
— только веб-сервер Apache
+ любой веб-сервер, который может выполнять PHP приложения
— веб-сервер Apache или IIS
5. Параметр memory_limit может быть установлен
+ из скрипта с использованием функции ini_set()
+ в файле .htaccess
— в настройках главного модуля
+ непосредственно в файле php.ini
+ в файле настроек веб-сервера httpd.conf
6. Возможность управления визуальными темами административного интерфейса реализована за счет использования:
+ CSS
— AJAX
— Java Script
— RSS
7. Продукт поставляется
— различаются только дистрибутивы для Oracle XE/MSSQL Express и Oracle/MSSQL
+ единым дистрибутивом для всех баз данных
— в различных версиях для разных баз данных
8. Использование строки php_flag session.use_trans_sid off в файле .htaccess позволяет:
— отключить сохранение файлов сессии
+ отключить подстановку параметра PHPSESSID=. в URL
— указать, что для сохранения файлов сессии будет использоваться директория по умолчанию (т.е. /temp)
9. Библиотека FreeType необходима для корректной работы
— графиков и диаграмм в модулях Статистики, Рекламы и др.
+ механизма CAPTCHA
— диаграмм в модуле опросов
10. Использование строки ini_set(«memory_limit», «») в файле /bitrix/php_interface/dbconn.php позволяет:
— определить максимальный объем памяти, необходимый для работы ядра продукта
+ установить максимальный объем памяти, доступный при работе системы ядру продукта
— определить минимальный объем памяти, необходимый для работы ядра продукта
11. Если при установке продукта для выбора не доступна база данных Oracle это значит, что
— не настроена поддержка ODBC
+ в PHP не подключено расширение для работы с данной СУБД: php_oci8
— используется дистрибутив продукта, не соответствующий лицензионному ключу
12. Обмен информацией с использованием технологии RSS поддерживается модулями:
— Почта
+ Информационные блоки
+ Форум
— Статистика
+ Блоги
13. Обработка файлов .htaccess невозможна
— PHP установлен как CGI
+ при использовании веб-сервера IIS
— при использовании веб-сервера Apache
— в настройках веб-сервера (httpd.conf) установлена директива AllowOverride All
— PHP установлен как модуль Apache
14. Если при настройке работы с сессиями в PHP не был установлен путь для сохранения файлов сессии, то:
+ по умолчанию для сохранения файлов сессии будет использоваться директория /tmp
— файлы сессии сохраняться не будут
— по умолчанию для сохранения файлов сессии будет использоваться директория /temp