訪問 phpMyAdmin 提示「無法載入 mysql 擴展,請檢查 PHP 配置」,phpinfo() 中無 MySQL 區塊,錯誤日誌記錄 Unable to load dynamic library 'php_mysql.dll'。此問題高發於 PHP 5.x Windows 環境(PHP 7+ 已移除 mysql 擴展,改用 mysqli/PDO_MySQL)。
php_mysql.dll 依賴 libmysql.dll(MySQL 客戶端庫),後者未在系統 PATH 中。extension_dir 指向錯誤目錄,或 php.ini 未生效。下載官方 Windows Zip 套件(非安裝包),解壓至 C:\php。目錄結構應包含:
C:\php\
├── php.exe
├── php.ini
├── ext\
│ ├── php_mysql.dll
│ ├── php_mysqli.dll
│ └── ...
├── libmysql.dll <-- 關鍵文件
└── ...
; 1. 擴展目錄(絕對路徑)
extension_dir = "C:\php\ext"
; 2. 啟用擴展(去掉分號)
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
; 3. 關鍵:確保 libmysql.dll 可被找到
; 方法 A:複製到系統目錄(不推薦,易版本衝突)
; copy C:\php\libmysql.dll C:\Windows\System32\
; 方法 B:將 PHP 目錄加入系統 PATH(推薦)
; 控制面板 → 系統 → 高級 → 環境變量 → 系統變量 Path → 編輯 → 新增 C:\php
*.php → C:\php\php-cgi.exe(FastCGI)或 php5isapi.dll(ISAPI,舊版)。PHP_FCGI_MAX_REQUESTS=10000、PHP_FCGI_CHILDREN=0。NetworkService 或自定義有讀取權限的用戶。iisreset /restart
# 或
net stop w3svc & net stop iisadmin & net start w3svc
瀏覽 https://localhost/phpinfo.php(內容:<?php phpinfo(); ?>),搜尋 "mysql" 確認載入成功。
depends.exe 打開 php_mysql.dll,紅色缺失項即為缺少的依賴 DLL。php -m 命令行檢查模組載入狀態,錯誤輸出更直觀。php_errors.log(需在 php.ini 設定 error_log 路徑)。php.ini(phpinfo() 顯示 "Loaded Configuration File")。ext/mysql 已在 PHP 7.0 移除,新專案請直接使用:
舊專案遷移可參考官方 選擇 API 指南,重點替換 mysql_* 函數為 mysqli_* 或 PDO 寫法。
核心關鍵在於 libmysql.dll 可被系統定位。推薦採用「PHP 目錄加入 PATH」而非複製到 System32,避免版本地獄。PHP 5.x 維護專案建議盡快規劃遷移至 mysqli/PDO,徹底規避此類擴展載入問題。