萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

解決 PHP 啟動報錯「找不到 libmysql.dll」的完整方案

問題現象

在 Windows 環境下啟動 PHP(無論是 CLI 還是 Apache 模組)時,彈出錯誤對話框或日誌記錄:

系統錯誤:找不到 libmysql.dll,無法繼續執行代碼。

導致 php_mysql.dll(或 php_mysqli.dll、php_pdo_mysql.dll)無法載入,MySQL 相關功能全部失效。

根因分析

  1. PHP 的 MySQL 擴展依賴 MySQL 客戶端庫 libmysql.dll。
  2. Windows 系統通過 PATH 環境變量查找動態鏈接庫,若 PHP 目錄不在 PATH 中,系統找不到該文件。
  3. PHP 5.3+ 版本隨包附帶 libmysql.dll,但不會自動加入系統路徑。

三種解決方案(按推薦順序)

方案一:將 PHP 目錄加入系統 PATH(最規範、可維護性最強)

適用場景: 生產服務器、開發機、多 PHP 版本共存環境。

  1. 右鍵「此電腦」→「屬性」→「高級系統設置」→「環境變量」。
  2. 在「系統變量」區找到 Path,雙擊編輯。
  3. 點擊「新建」,添加 PHP 安裝目錄(如 C:\php 或 C:\php-8.2)。
  4. 確定所有對話框,**重啟命令提示符 / PowerShell / Apache 服務** 使生效。

驗證: 在新終端執行 php -m | findstr mysql,應顯示 mysqli、pdo_mysql 等模組。

方案二:複製 libmysql.dll 到系統目錄(快速臨時修復)

適用場景: 單機開發、臨時測試、無權限修改系統環境變量。

copy C:\php\libmysql.dll C:\Windows\System32\

缺點: 系統目錄污染、多版本衝突、Windows 更新可能覆蓋、不符合最佳實踐。

方案三:將 libmysql.dll 放在 Apache / PHP 同目錄下(便攜式部署)

若使用 Apache + PHP(mod_php 或 FastCGI),可將 libmysql.dll 複製到:

  • Apache 的 bin 目錄(如 C:\Apache24\bin)
  • 或 PHP 的 ext 目錄旁(與 php.exe 同級)

Windows 加載 DLL 的搜尋順序會優先檢查應用程式所在目錄。

進階排查清單

  • 確認 php.ini 已啟用擴展: extension=mysqli、extension=pdo_mysql(去掉分號)。
  • 確認 extension_dir 指向正確: extension_dir = "C:/php/ext"(使用正斜槓)。
  • 版本匹配: PHP 8.1+ 內建 mysqlnd,不再需要外部 libmysql.dll;若仍報錯,檢查是否誤裝舊版擴展。
  • 依賴檢查工具: 使用 Dependencies(現代版 Dependency Walker)打開 php_mysqli.dll,查看缺失的 DLL。

常見誤區

「複製到 System32 就好啦,為什麼不推薦?」

因為:

  1. 污染系統純淨度,導致後續排查困難;
  2. 多個 PHP 版本共存時,System32 只能放一個版本的 DLL;
  3. Windows 更新或安全策略可能刪除/替換該文件。

總結

**首選方案一(配置 PATH)**,一次設定永久生效,符合 Windows 運維規範。若是臨時測試,方案二最快;容器化/便攜式部署時用方案三。PHP 8.1+ 遷移至 mysqlnd 後,此類問題將大幅減少。

copyright © 萬盛學電腦網 all rights reserved