PHP 8.3 報錯排查:無法載入動態函式庫 php_xmlrpc.dll / php_gd2.dll 解決方案

將 PHP 升級至 8.0 以上版本(例如 PHP 8.3)後,執行或啟動伺服器時可能會遇到類似以下的警告訊息:

PHP Warning: PHP Startup: Unable to load dynamic library 'php_xmlrpc.dll' (tried: C:\Program Files\PHP\v8.3\ext\php_xmlrpc.dll (找不到指定的模組。), C:\Program Files\PHP\v8.3\ext\php_php_xmlrpc.dll.dll (找不到指定的模組。)) in Unknown on line 0

原因分析

此錯誤通常源自以下兩個主要原因:

  1. 擴充套件(Extension)命名規則變更在舊版 PHP(PHP 7.x 及更早版本)中,設定檔常寫為 extension=php_gd2.dll 或帶有 php_ 前綴。從 PHP 8.0 開始,官方簡化了指定方式,只需填寫擴充套件簡稱(例如 extension=gd)。若仍使用舊式檔名,PHP 在自動補充路徑時會產生如 php_php_...dll.dll 的重複路徑而找不到檔案。
  2. 部分舊版擴充套件已被移除(以 XMLRPC 為例)xmlrpc 擴充套件已於 PHP 8.0 起從核心移除並移至 PECL。因此 PHP 8.3 預設的 ext/ 目錄下已不再提供 php_xmlrpc.dll

解決步驟

步驟 1:開啟 php.ini 設定檔

找到目前 PHP 8.3 環境所使用的 php.ini 檔案(例如:C:\Program Files\PHP\v8.3\php.ini)。

步驟 2:修正或停用問題擴充套件

以系統管理員權限開啟 php.ini

若為舊版命名格式問題(如 GD 繪圖庫):搜尋 gd,將舊式的設定修正為新版標準格式:

舊寫法:

extension=php_gd2.dll

請改為:

extension=gd

若為已移出核心的擴充套件(如 XMLRPC):

搜尋 xmlrpc,若無特殊需要,直接在行首加上分號 ; 將其註解停用:

;extension=php_xmlrpc.dll 
;extension=xmlrpc

步驟 3:確認擴充套件目錄 (extension_dir)

確認 php.ini 中的 extension_dir 指令已正確啟用並指向正確路徑:

extension_dir = "ext"

(或使用絕對路徑:extension_dir = "C:\Program Files\PHP\v8.3\ext")

步骤 4:重啟 Web 伺服器 / PHP 服務

儲存 php.ini 後,重啟 Apache、Nginx、IIS 或重開 PHP CLI 環境,以使新的設定生效。


The PHP startup warnings require  php.ini  cleanup:

date.timezone = Asia/Taipei
extension=gd

Remove duplicate entries for  curl ,  mysqli ,  mbstring ,  openssl ,  ldap , and  pdo_mysql .

Also remove or install matching extensions:

  •  xmlrpc : unavailable in standard PHP 8.3; comment it out unless separately installed.
  •  pdo_sqlsrv_82_nts_x64 : replace with the PHP 8.3 NTS x64 driver, or remove it if unused.

Do not suppress these with  error_reporting(0) ; correcting  php.ini  will eliminate the startup log noise

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *