zlibとは? わかりやすく解説

556の専門辞書や国語辞典百科事典から一度に検索! Weblio 辞書 ヘルプ

zlib 圧縮関数

導入

このモジュールにより gzip (.gz) で圧縮されたファイルを読み書きすることが可能となります。 この際、ファイルシステム 関数の gzip 圧縮対応版 (非圧縮ファイルも扱えますが、 ソケットは扱えません)を使用します。
注意: バージョン 4.0.4 で .gz ファイルに対応した fopen のラッパー を導入しました。 fopen() に渡すファイル名または パス名に zlib: をつけると、通常の f*() ファイルアクセス関数を使用して圧縮ファイルに透過的にアクセスすることが できます。
PHP 4.3.0 において、';' を含むファイル名との曖昧さを避けるため zlib:compress.zlib:// に変更されました。fopencookie() 関数は もはや必要ありません。詳細な情報は、 圧縮ストリーム項 にあります。

要件

このモジュールは、Jean-loup Gailly および Mark Adler による » zlib の関数を使用します。 このモジュールを使用するには、zlib バージョン >= 1.0.9 を使用する必要があります。

インストール手順

PHPにおけるZlibサポートは、デフォルトでは利用できません。 Zlibサポートを有効にするには、PHPのコンパイル時にconfigureの オプションに--with-zlib[=DIR]を 指定してコンパイルする必要があります。
Windows 版の PHP には この拡張モジュールのサポートが組み込まれています。これらの関数を使用 するために拡張モジュールを追加でロードする必要はありません。
注意: PHP 4.3.0 以降、zlib モジュールは Windows 用 php バイナリにビルトインされています。

実行時設定

php.ini の設定により動作が変化します。
zlib 拡張モジュールは、 ブラウザがサポートする場合にページを透過的に圧縮するオプションを提供します。 ここで、 設定ファイル php.ini のオプションには、以下の 3 種類があります。 表 334. Zlib設定オプション
名前デフォルト変更の可否変更履歴
zlib.output_compression"0"PHP_INI_ALLPHP 4.0.5 から利用可能
zlib.output_compression_level"-1"PHP_INI_ALLPHP 4.3.0 から利用可能
zlib.output_handler""PHP_INI_ALLPHP 4.3.0 から利用可能

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
zlib.output_compression boolean/integer
透過的なページ圧縮を行うかどうか。php.ini または Apache の設定でこのオプションが、"On" に設定された場合、 ブラウザが "Accept-Encoding: gzip" または "deflate" ヘッダを送信する場合に、ページは圧縮されます。 "Content-Encoding: gzip" (および "deflate") と "Vary: Accept-Encoding" ヘッダが出力に追加されます。 実行時、何らかのデータを送出する前にのみ設定することが可能です。
このオプションも論理値 "On"/"Off" のかわりに整数値をとることができ、 これを用いて出力のバッファサイズ (デフォルトは 4KB) を設定することができます。
注意: このオプションに 'On' を設定した場合、 output_handler を空にする必要があります! かわりに zlib.output_handler を使用する必要があります。
zlib.output_compression_level integer
透過的出力圧縮で使用される圧縮レベル。
zlib.output_handler string
zlib.output_compression が有効な場合、 他の出力ハンドラを指定することはできません。 この設定は、output_handler と同じですが、順番が異なります。

リソース型

リソース型は定義されていません。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
FORCE_GZIP (integer)
FORCE_DEFLATE (integer)

テンポラリファイルをオープンし、テスト用文字列を書きこみ、 続いて、このファイルの内容を 2 回出力します。
例 2535. 簡単な Zlib の例
<?php

$filename = tempnam('/tmp', 'zlibtest') . '.gz';
echo "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// 最大限の圧縮を指定して書きこみ用にファイルをオープン
$zp = gzopen($filename, "w9");

// 文字列をファイルに書きこむ
gzwrite($zp, $s);

// ファイルを閉じる
gzclose($zp);

// 読みこみ用にファイルをオープン
$zp = gzopen($filename, "r");

// 3 文字読みこむ
echo gzread($zp, 3);

// ファイルの終端まで出力して閉じる
gzpassthru($zp);
gzclose($zp);

echo "\n";

// ファイルをオープンし、内容を出力する (2回目)
if (readgzfile($filename) != strlen($s)) {
       echo "Error with zlib functions!";
}
unlink($filename);
echo "</pre>\n</body>\n</html>\n";

?>

目次

gzclose — 開かれたgzファイルへのポインタを閉じる
gzcompress — 文字列を圧縮する
gzdecode — gzip 圧縮された文字列をデコードする
gzdeflate — 文字列を deflate 圧縮する
gzencode — gzip 圧縮された文字列を作成する
gzeof — gz ファイルポインタがファイル終端かどうか調べる
gzfile — gzファイル全体を配列に読み込む
gzgetc — gz ファイルへのポインタから文字を得る
gzgets — ファイルポインタから 1 行を得る
gzgetss — gzファイルへのポインタから1行を得て、HTMLタグを取り除く
gzinflate — deflate圧縮された文字列を解凍する
gzopen — gz ファイルを開く
gzpassthru — gzファイルへのポインタから残りのデータ全部を出力する
gzputs — のエイリアス gzwrite()
gzread — バイナリ対応のgzファイル読み込み
gzrewind — gz ファイルポインタの示す位置を元に戻す
gzseek — gz ファイルポインタの位置を移動する
gztell — gzファイルポインタの読み込み/書き込み位置を返します
gzuncompress — 圧縮された文字列を解凍する
gzwrite — バイナリセーフな gz ファイル書き込み
readgzfile — gz ファイルを出力する
zlib_get_coding_type — 出力圧縮に使用されたコーディングの種類を返す

zlib

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/16 09:05 UTC 版)

zlib
初版 1995年
最新版
1.3.1 / 2024年1月22日 (12か月前) (2024-01-22) [1]
リポジトリ
プログラミング
言語
C言語
対応OS クロスプラットフォーム
サポート状況 開発中
種別 圧縮ライブラリ
ライセンス zlib License
公式サイト https://zlib.net/
テンプレートを表示

zlibは、データの圧縮および伸張を行うための自由ソフトウェアライブラリである。可逆圧縮アルゴリズムのDeflate (RFC 1951) を実装している。ヘッダーやフッターなどのデータ形式はRFC 1950 (ZLIB Compressed Data Format Specification) として仕様化されている。また、これ以外のデータ形式としてRFC 1952 (GZIP File Format Specification) および、RAW形式 (ヘッダーやフッターなし) もサポートする[2]

概要

zlibの作者は、ジャン=ルー・ガイイ (Jean-Loup Gailly) とマーク・アドラー (Mark Adler) である。彼らはgzipの主要開発者でもある。ジャンが圧縮、マークが伸張に関する部分を担当した。ライセンスはgzipとは違いGPLではなく、BSDライセンスに近い、より制限の緩やかなもの (zlib License) が採用されている。

zlibはC言語で記述されている。ほとんどのプログラミング言語ではzlibを使えるようにラッパーライブラリなどの形態で提供している。例えば、Java SEJava Runtime Environment (JRE) には標準Javaクラスライブラリjava.util.zipパッケージとして組み込まれており、Javaプラットフォーム上でも利用できる。.NET Framework/.NET CoreではSystem.IO.Compression名前空間にて各種クラスが提供されている。

zlibは、商用・非商用を問わず多くのソフトウェアで採用されている[3]。画像フォーマットのPNGがDeflateの実装を必要とするため、データ圧縮系だけでなく、画像を表示するほとんどのソフトウェアでも使われている。また、ほとんどのオペレーティングシステム (OS) で共有ライブラリとして含まれている。パソコン・サーバー・携帯電話など、非常に多くのOSで使われているライブラリのため、問題が発見されると、広範囲のシステムに影響が及ぶ。2002年と2005年にセキュリティ問題が発見・修正されたが、その後も脆弱性が発見されるたびにパッチが提供されており[4]、システムを健全な状態に保つためにはライブラリの更新が必要となる。

ヘッダー・フッター

zlibのデータ形式 (RFC 1950) は、圧縮データの前に2バイト以上のヘッダーと末尾に4バイトのAdler-32のフッターが付く。

ヘッダーの最初の2バイトは以下の通り。

  • 1バイト目
    • 上位4ビットは圧縮情報であり LZ77 のウィンドウサイズ。7なら32KBのウィンドウサイズ。
    • 下位4ビットが圧縮方式。通常は数値の8。
  • 2バイト目は
    • 上位2ビットは圧縮レベル。デフォルトは2。
    • 6ビット目はプリセット辞書があるかどうか。
    • 下位5ビットがヘッダー2バイト分のチェックビット。

プリセット辞書を使う場合は3バイト目から辞書情報が続く。使わなければ、圧縮データが続く。

なお、gzip 形式 (RFC 1952) の場合は、10バイト以上のヘッダーと8バイトのフッターが付く。

Media Type

2012年8月に発行された RFC 6713application/zlib が定義され、application/gzip と共に IANA に正式に登録された[5]

脚注

  1. ^ zlib Home Site” (2024年1月22日). 2024年3月6日閲覧。
  2. ^ zlib Manual
  3. ^ http://zlib.net/apps.gz.html[リンク切れ]
  4. ^ 【セキュリティ ニュース】圧縮ライブラリ「zlib」の最新版に深刻な脆弱性(1ページ目 / 全1ページ):Security NEXT
  5. ^ Levine, John (2012年8月). “RFC 6713 – The 'application/zlib' and 'application/gzip' Media Types” (英語). Internet Engineering Task Force. 2015年3月11日閲覧。

関連項目

外部リンク




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「zlib」の関連用語

zlibのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



zlibのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのzlib (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS     

iiq_pixel