| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| zlib.output_compression | "0" | PHP_INI_ALL | PHP 4.0.5 から利用可能 |
| zlib.output_compression_level | "-1" | PHP_INI_ALL | PHP 4.3.0 から利用可能 |
| zlib.output_handler | "" | PHP_INI_ALL | PHP 4.3.0 から利用可能 |
<?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";
?>
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/16 09:05 UTC 版)
| |
|
| 初版 | 1995年 |
|---|---|
| 最新版 |
1.3.1 / 2024年1月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 SEのJava 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バイトは以下の通り。
プリセット辞書を使う場合は3バイト目から辞書情報が続く。使わなければ、圧縮データが続く。
なお、gzip 形式 ( RFC 1952) の場合は、10バイト以上のヘッダーと8バイトのフッターが付く。
2012年8月に発行された
RFC 6713 で application/zlib が定義され、application/gzip と共に IANA に正式に登録された[5]。
固有名詞の分類