CascadiaPHP 2024

zlib://

bzip2://

zip://

zlib:// -- bzip2:// -- zip://Flux de compression

Description

compress.zlib:// et compress.bzip2://

zlib: fonctionne comme gzopen(), hormis le fait que le flux peut être utilisé directement avec fread() et les autres fonctions de système de fichiers. Cette notation est obsolète à cause d'ambiguïtés dues aux noms de fichiers contenant des deux points ':'. Utilisez plutôt compress.zlib://.

compress.zlib:// et compress.bzip2:// sont respectivement équivalents à gzopen() et bzopen(), et ils fonctionnent même sur les systèmes qui ne supportent pas fopencookie.

L'extension ZIP fournit l'enveloppe zip:. À partir de PHP 7.2.0 et libzip 1.2.0+, le support des mots de passe pour les archives chiffrées a été ajouté, permettant aux mots de passe d'être fournis par des contextes de flux. Les mots de passe peuvent être définis sur un flux à l'aide de l'option de contexte 'password'.

Utilisation

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

Options

Résumé des enveloppes
Attribut Supporté
Limité par allow_url_fopen Non
Autorise la lecture Oui
Autorise l'écriture Oui (sauf zip://)
Autorise l'ajout Oui (sauf zip://)
Autorise la lecture et l'écriture simultanément Non
Support de la fonction stat() Non, utilisez le gestionnaire file:// pour obtenir des informations sur les fichiers compressés.
Support de la fonction unlink() Non, utilisez le gestionnaire file:// pour obtenir des informations sur les fichiers compressés.
Support de la fonction rename() Non
Support de la fonction mkdir() Non
Support de la fonction rmdir() Non

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