在 Windows 環境下啟動 PHP(無論是 CLI 還是 Apache 模組)時,彈出錯誤對話框或日誌記錄:
系統錯誤:找不到 libmysql.dll,無法繼續執行代碼。
導致 php_mysql.dll(或 php_mysqli.dll、php_pdo_mysql.dll)無法載入,MySQL 相關功能全部失效。
libmysql.dll。PATH 環境變量查找動態鏈接庫,若 PHP 目錄不在 PATH 中,系統找不到該文件。libmysql.dll,但不會自動加入系統路徑。適用場景: 生產服務器、開發機、多 PHP 版本共存環境。
Path,雙擊編輯。C:\php 或 C:\php-8.2)。驗證: 在新終端執行 php -m | findstr mysql,應顯示 mysqli、pdo_mysql 等模組。
適用場景: 單機開發、臨時測試、無權限修改系統環境變量。
copy C:\php\libmysql.dll C:\Windows\System32\
缺點: 系統目錄污染、多版本衝突、Windows 更新可能覆蓋、不符合最佳實踐。
若使用 Apache + PHP(mod_php 或 FastCGI),可將 libmysql.dll 複製到:
bin 目錄(如 C:\Apache24\bin)ext 目錄旁(與 php.exe 同級)Windows 加載 DLL 的搜尋順序會優先檢查應用程式所在目錄。
extension=mysqli、extension=pdo_mysql(去掉分號)。extension_dir = "C:/php/ext"(使用正斜槓)。mysqlnd,不再需要外部 libmysql.dll;若仍報錯,檢查是否誤裝舊版擴展。php_mysqli.dll,查看缺失的 DLL。「複製到 System32 就好啦,為什麼不推薦?」
因為:
**首選方案一(配置 PATH)**,一次設定永久生效,符合 Windows 運維規範。若是臨時測試,方案二最快;容器化/便攜式部署時用方案三。PHP 8.1+ 遷移至 mysqlnd 後,此類問題將大幅減少。