2011年12月25日

PHP建立ZIP檔時出現偏移而無法解壓縮

最近遇到個問題是php壓縮zip檔後,再利用readfile函式供使用者下載,但下載後的zip檔利用windows內建程式解壓縮時,都會出現檔案損毀訊息,用7zip的資訊功能反應出檔案有偏移的狀況,經過我觀察比較後,若壓縮後的檔案不要用readfile下載都沒問題,且兩種下載方式,檔案大小差了1個位元組。

查看PHP手冊,readfile函式對於採用gzip壓縮模式傳輸時可能會造成問題,建議採用以下方式解決:

1. 在程式加上:
@apache_setenv('no-gzip', 1);
@
ini_set('zlib.output_compression', 0);


2. 在php.ini設定:
zlib.output_compression = 0

參考文獻
PHP readfile
PHP zlib.configuration

沒有留言:

張貼留言