現象:ECShop 等 PHP 系統驗證碼顯示紅叉,直接存取驗證碼 URL (如 /admin/index.php?act=captcha) 瀏覽器報錯:
錯誤 330 (net::ERR_CONTENT_DECODING_FAILED):未知錯誤
雙重 GZIP 壓縮:PHP 程式碼中啟用 ob_start('ob_gzhandler') 或框架配置開啟 GZIP,同時 Web 伺服器 (Apache mod_deflate / Nginx gzip / IIS 動態壓縮) 也對輸出進行壓縮。瀏覽器收到雙重壓縮資料流,解壓失敗拋出 330 錯誤。驗證碼、圖片、二進位串流最易觸發。
優點:集中管理、支援靜態/動態混合、可精細控制 MIME 類型、避免 PHP 輸出二進位內容被誤壓。
| 系統 | 關閉方法 |
|---|---|
| ECShop | 管理中心 → 商店設定 → 基本設定 → 是否啟用 Gzip 模式:禁用 |
| Discuz! (X 系列) | 1. FTP 下載 config/config_global.php → $_config['output']['gzip'] = 0;2. 或資料庫執行: UPDATE pre_common_setting SET svalue='0' WHERE skey='gzip';3. 後台 → 全域 → 伺服器優化 → 關閉 Gzip |
| Discuz! (7.2 及舊版) | FTP 下載 forumdata/cache/cache_settings.php → 'gzipcompress' => 0 → 上傳覆蓋 → 後台關閉 |
| phpwind | data/bbscache/config.php → $db_obstart = '0'; → 後台 → 論壇核心設定 → 核心功能 → 禁止 GZIP |
| ShopEx 4.7.1 | 替換根目錄 index.php 為修正版 (官方補丁包) |
| ShopEx 4.7.2+ | include/mall_config.php 末尾加入:define('SYS_GZIP', false); |
| SaBlog | cache/cache_settings.php 第 64 行 'gzipcompress' => '0' |
| 動網 PHP 版 | global.php 將 $db_obstart = 1 改為 0 |
| Supesite/X-Space | data/system/config.cache.php → 'gzipcompress' => 0 |
LoadModule deflate_module 或 SetOutputFilter DEFLATE。gzip off; 在 http/server/location 層。Content-Encoding: gzip。結語:GZIP 雙重壓縮是 PHP 應用遷移至支援壓縮的 Web 伺服器時常見問題。統一由 Web 伺服器層處理壓縮,應用層全面關閉 為最佳實踐,兼顧效能、相容性與維護簡易性。