Windows 事件檢視器 → 系統/應用程式 日誌中反覆出現:
伴隨 PHP 應用間歇性 500 錯誤、效能下降、Zend 加速失效。
Zend Optimizer 需在 **暫存目錄** 建立共享記憶體對應檔 (`ZendOptimizer.MemoryBase@<用戶>`) 以進行程式碼快取與優化。若執行 PHP 的身分 (IIS_IUSRS / IUSR / NETWORK SERVICE / 應用程式池身分) **無寫入權限**,即記錄上述事件並降級運行 (不加速)。
查看 `php.ini`:
upload_tmp_dir = "C:\Windows\Temp" ; 或 session.save_path = "C:\Windows\Temp" ; 若未設定,預為 %TEMP% / %TMP% 環境變數指向
**關鍵:** 以 **PHP 實際執行身分** 為準,非預設 `C:\Windows\Temp`。
若目錄下缺少 `ZendOptimizer.MemoryBase@SYSTEM`、`ZendOptimizer.MemoryBase@NETWORK SERVICE`,手動建立空白檔案並給予相同權限:
type nul > "C:\Windows\Temp\ZendOptimizer.MemoryBase@SYSTEM" type nul > "C:\Windows\Temp\ZendOptimizer.MemoryBase@NETWORK SERVICE" icacls "C:\Windows\Temp\ZendOptimizer.MemoryBase@" /grant "IIS_IUSRS:(M)" "IUSR:(M)" "NETWORK SERVICE:(M)"
; php.ini upload_tmp_dir = "C:\PHP\Temp" session.save_path = "C:\PHP\Temp" ; 建立 C:\PHP\Temp 並給予上述權限,隔離系統 Temp,更安全可控
確保 `C:\Program Files\Zend\ZendOptimizer-<版本>\lib\` (或安裝路徑) 給予 `IIS_IUSRS`、`IUSR` **讀取與執行** 權限。
若上述均無效,啟用 IIS 5.0 相容模式:
此模式每網站獨立進程,權限邊界清晰,但**資源消耗大、不支援 IIS 7+**。
PHP 5.5+ 內建 **OPcache**,效能更強、零配置衝突、無權限困擾:
; php.ini (PHP 5.5+) zend_extension=opcache.so ; Windows: php_opcache.dll opcache.enable=1 opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=20000 opcache.revalidate_freq=60 opcache.fast_shutdown=1
強烈建議 PHP 5.3/5.4 專案規劃升級至 PHP 7.4+/8.x,徹底解決 Zend Optimizer 歷史包袱。
Zend Optimizer 事件錯誤 **99% 為暫存目錄寫入權限不足**。按順序:確認實際 Temp 路徑 → 給 `IIS_IUSRS`/`IUSR`/`NETWORK SERVICE` 修改權限 → 明確指定 `upload_tmp_dir` → 驗證事件日誌清靜。長期請遷移 OPcache。