スレッド表示 | フラット表示〕 全トピック 920 件中 685 番目 次≫ ≪前

ZLIB関数の使用について

created: 2004-02-10 04:20 | modified: 2004-02-12 03:07 | reply: 3

[1286] ZLIB関数の使用について

user: Booska ホームページ | created: 2004-02-10 04:20
初めて投稿いたします。

php4.3.4, Apache1.3(windows版)を使用しています。
ローカルファイルのzlibの展開についての質問です。

4.3.0以上でphpバイナリとしてビルトインされているということで特に拡張モジュールはロードしていません。
また、Zlib設定オプション(zlib.output_compression等)は何も設定していません。
展開対象ファイルは最初8バイトがファイル特有のヘッダ領域で9バイト目から圧縮データということはJavaによる解凍で確認しています。
以下の2つを書いてみたのですが、どちらもうまくいきませんでした。

1)
$fd = fopen($filepath,"rb");
$buf = fread($fd, filesize($filepath));
$buf = unpack("C*", substr($buf,8));
$unpack = gzinflate($buf);

2)
$zp = gzopen ($dest, "r");
gzseek($zp, 8);
gzpassthru($zp);

1)で"gzinflate(): buffer error"が表示されました。
2)では解凍されないそのままのデータが表示されました。

環境周りなのかソースコードの問題なのか、ご指導をいただきたく思います。
宜しくお願いします。
reply: 1287 返信 編集 削除

[1287] 2)でうまくいきました。

user: シロウ ホームページ | created: 2004-02-10 18:40
はじめましてシロウと申します。

1)
unpack()関数は配列を返します。
gzinflate()の引数が文字列を要求するためエラーとなる筈です。
(PHPはバイナリデータを区別しない)

2)
私が試した結果、解凍されたデータが表示されました。
(gzseek($zp, 8); では解凍後のデータが8バイト分移動されます。)


私の環境はWindowsXP Apache/1.3.29 (Win32) PHP/4.3.4 です。
特にphp.iniの設定をしていません。

圧縮ファイル:メモ帳で作ったtextファイルを gzip コマンドで圧縮。

環境周りの確認にはphpinfo()関数や以下の方法など他にも用意されています。
// 'zlib'モジュールが読み込まれているか
$res = extension_loaded('zlib');
var_dump($res);
結果:
bool(true)
Parent: 1286  reply: 1289 返信 編集 削除

[1289] Re: 2)でうまくいきました。

user: Booska ホームページ | created: 2004-02-12 02:49
ご回答ありがとうございます。

zlibに関しては組み込まれていたようですが、
やはりうまく解凍されないようです。
1)に関してはunpack()を外して試したところdata errorが発生、
2)に関してはそのままの表示となってしまいます。

実際にgzwriteしgzreadを試してみると圧縮と解凍が成功しているように見えます。
今回は全くシステム外で圧縮されたファイルを解凍するつもりでおり
そのファイルがphpのzlibに適しないのかと推測しております。
(Java1.4のDEFLATE圧縮とgzip圧縮とは違う?)
ZLIBから勉強した方がいいみたいです。

いろいろとご指摘ありがとうございました。
Parent: 1287  reply: 1290 返信 編集 削除

[1290] 解決しました

user: Booska ホームページ | created: 2004-02-12 03:07
gzipとzlibの互換はzlib.output_compression_level=6
でした。

gzinflate()ではなく、gzuncompress()を使えば設定したレベルで無事解凍できました。
マニュアルの読み方は難しいものですね。

いろいろとありがとうございました。
Parent: 1289  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 685 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑