PDO (PHP Data Objects) 為 PHP 訪問數據庫定義了輕量級、一致性的接口,提供數據訪問抽象層,使得無論使用何種數據庫,都能通過統一的函數執行查詢與獲取數據。許多現代 PHP 管理系統(如 Laravel、Symfony、ThinkPHP)均要求啟用 PDO 及對應驅動。本文詳細說明在 Windows 與 Linux 環境下的啟用步驟。
php.ini 文件(可通過 php --ini 或 phpinfo() 查看);:extension=php_pdo.dll
extension=php_pdo_mysql.dll
php -m | grep pdo 或查看 phpinfo() 驗證是否生效sudo apt-get update
sudo apt-get install php-pdo php-mysql
sudo systemctl restart apache2
sudo yum install php-pdo php-mysqlnd
sudo systemctl restart httpd
# 進入 PHP 源碼擴展目錄
cd php-src/ext/pdo_mysql
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=mysqlnd
make && sudo make install
# 在 php.ini 中添加 extension=pdo_mysql.so
創建測試腳本 test_pdo.php:
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 連接成功!";
print_r($pdo->query("SELECT VERSION()")->fetch());
} catch (PDOException $e) {
echo "連接失敗: " . $e->getMessage();
}
?>
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 找不到 php_pdo.dll | PHP 版本不匹配或安裝不完整 | 下載對應版本的 PHP 完整包,提取 dll 文件 |
| 啟用後報錯 "could not find driver" | 缺少 MySQL 客戶端庫 | Windows: 複製 libmysql.dll 到系統目錄;Linux: 安裝 libmysqlclient-dev |
| phpinfo() 不顯示 pdo_mysql | 修改了錯誤的 php.ini | 執行 php --ini 確認加載的配置文件路徑 |
啟用 PDO 後,建議在項目中全面替換舊的 mysql_* 函數(已在 PHP 7.0 移除),使用 PDO 進行數據庫操作,享受更安全、可維護的代碼體驗。