在 Windows Server 上啟用 PHP GD 擴展(已在 php.ini 取消註釋 extension=gd 或 extension=php_gd2.dll),重啟 IIS/Apache 後,phpinfo() 頁面的 Configure Command 欄位未出現 --with-gd 或 --enable-gd 相關編譯參數,且 gd 區塊缺失,函數 imagecreatetruecolor() 呼叫報錯 Call to undefined function。
cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" "--with-pgo"
可見編譯參數中缺少 GD 相關選項(--with-gd、--with-freetype-dir 等)。
Non Thread Safe / Thread Safe ZIP)已內建 GD,無需編譯參數即可使用Configure Command 僅反映編譯時參數,不代表運行時擴展狀態phpinfo() 是否有 gd 區塊、GD Support => enabledphp_gd.dll(舊版 php_gd2.dll)extension_dir 路徑下是否存在對應 .dllphp.ini 非實際生效檔案(查看 Loaded Configuration File)extension=gd 前有分號、拼寫錯誤、或寫在 [ExtensionList] 區塊外PATH 環境變量包含 PHP 目錄System32 / Apache bin / PHP 根目錄Depend.exe (Dependency Walker) 分析 php_gd.dll 缺失依賴extension_dir 讀取權限; php.ini 確認項目
extension_dir = "C:/php/ext" ; 實際 ext 目錄
extension=gd ; PHP 7.2+ 統一名稱
; extension=php_gd2.dll ; PHP 5.x/7.0-7.1 舊名稱
執行 php -m | findstr gd(命令列模式)快速驗證模組載入。
php -r "var_dump(function_exists('imagecreatetruecolor'));"
# bool(true) 表示擴展已載入
# bool(false) 表示未載入,查看錯誤訊息
error_log 指定路徑Unable to load dynamic library 'gd'、The specified module could not be found# 下載 Dependency Walker (depends.exe)
# 開啟 php_gd.dll 查看紅色缺失 DLL
# 常見缺失:libpng16.dll, libjpeg-9.dll, freetype6.dll, zlib1.dll
# 將 PHP 安裝目錄加入系統 PATH
setx PATH "%PATH%;C:\php" /M
# IIS 應用程式池身分設定為有權限的使用者
# 或授予 IIS_IUSRS 目錄讀取/執行權限
| PHP 版本 | 擴展檔名 | 內建 GD | 備註 |
|---|---|---|---|
| 5.2 - 5.6 | php_gd2.dll | 否 | 需手動啟用 |
| 7.0 - 7.1 | php_gd2.dll | 是 | 官方包內建 |
| 7.2 - 7.4 | php_gd.dll | 是 | 改名 gd2→gd |
| 8.0+ | php_gd.dll | 是 | 預設啟用 |
php -m 有 gdphpinfo() 顯示 GD Support => enabledextension_dir、DLL 存在性、TS/NTS/VC 版本一致性Configure Command 無 GD 參數不代表 GD 不可用,Windows 官方二進制包已內建編譯。真正判斷標準是 phpinfo() 的 GD 區塊與 function_exists('gd_info')。排查核心在於:正確的 php.ini + 正確版本的 DLL + 完整的依賴鏈 + 正確的權限。按步驟逐項驗證,多數情況可在 10 分鐘內解決。