ShopEx 4.8.5 為老舊電商系統,強依賴 Zend Optimizer 加密擴展,而 PHP 5.3+ 已移除 Zend Optimizer 改用 Zend Guard Loader,且編譯版本 (VC6/VC9、TS/NTS) 需精確匹配。本文記錄完整踩坑過程與最終解決方案。
| PHP 版本 | 編譯器 | 執行緒安全 | 支援的 Zend 擴展 | ShopEx 4.8.5 |
|---|---|---|---|---|
| 5.2.x | VC6 | TS (Thread Safe) | Zend Optimizer 3.3.x | ✅ 完美支援 |
| 5.3.x | VC9 | NTS (Non-Thread Safe) | Zend Guard Loader | ❌ 版本不匹配 |
| 5.3.x | VC6 | TS | Zend Guard Loader (不支援) | ❌ 無法載入 |
| 5.4+ | VC9 | TS/NTS | Zend Guard Loader / OPcache | ❌ 完全不相容 |
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer_ts="C:/php/zendOptimizer/lib/Optimizer-3.3.3"
zend_extension_ts="C:/php/zendOptimizer/lib/ZendExtensionManager.dll"
zend_extension="C:/php/zendOptimizer/lib/ZendExtensionManager.dll"
路徑請依實際安裝位置調整,重啟 Apache 後 phpinfo() 應顯示 "Zend Optimizer v3.3.3"。
安裝過程卡在建立資料庫步驟,檢查發現僅建立 97 張表 (正常應 109 張)。
原因: MySQL 5.5+ 的 sql_mode 預設較嚴格 (如 STRICT_TRANS_TABLES),導致舊版 SQL 語句 (如 INSERT INTO ... VALUES ('') 對整數欄位) 失敗靜默跳過。
解決: 降級至 MySQL 5.1.55 或修改 my.ini 移除嚴格模式:
[mysqld]
sql_mode=""
register_globals=On (ShopEx 需求), magic_quotes_gpc=Onconfig.php, statics/, temp/, uploads/install/install.lock 重新安裝ShopEx 4.8.5 已停止維護多年,存在已知安全漏洞 (SQL注入、XSS、文件上傳繞過)。強烈建議 規劃遷移至現代電商框架 (如 ShopEx 6/ECShopX、Magento 2、OpenCart、Shopify 或自研 Laravel/Go 方案),並在遷移前完成資料遷移驗證與壓力測試。