PDO::getAvailableDrivers()返回空數組。
原因: PHP 未編譯或未啟用PDO 擴展,或者未安裝相應數據庫驅動擴展。
解決:
確認PHP 配置文件php.ini中開啟了extension=pdo.so或extension=php_pdo.dll 。
對於具體數據庫驅動,例如MySQL,需要啟用pdo_mysql擴展: extension=pdo_mysql.so或extension=php_pdo_mysql.dll 。
重新啟動Web 服務器或PHP-FPM 服務。
使用php -m查看已啟用模塊,確認是否有pdo和相應的pdo_mysql等。
表現:即使安裝了擴展,仍然返回空數組。
原因: PHP 配置文件有誤或多個配置文件衝突,導致擴展未生效。
解決:
使用php --ini確認加載的php.ini文件路徑。
確認沒有其他配置覆蓋,或者在CLI 和Web 環境下使用的配置不同。
查看PHP 錯誤日誌,確認擴展加載時是否有報錯。
手動在php.ini中添加對應extension=語句。
表現: PDO 可用但特定驅動無法使用。
原因: PHP 版本過舊或者擴展版本不匹配。
解決:
升級PHP 至推薦版本(如PHP 7.4 及以上)。
重新安裝擴展,確保版本兼容。
在Linux 上,可以使用包管理器安裝對應的PDO 驅動,如sudo apt install php-mysql 。
表現:沒有任何PDO 支持。
原因:自行編譯PHP 時未加上--enable-pdo和相應數據庫驅動參數。
解決:
重新編譯PHP,添加參數,例如:
<span><span>./configure --enable-pdo --with-pdo-mysql --with-pdo-sqlite
</span></span>
或者換用二進制包安裝版本。
表現: CLI 下返回正常,但Web 頁面返回空數組。
原因: CLI 和Web 使用的PHP 配置文件不同。
解決:
在Web 環境中用phpinfo()查看實際加載的配置文件和擴展信息。
確認Web 服務器的PHP 配置文件啟用了PDO 和相關驅動。
當你遇到PDO::getAvailableDrivers()返回空數組或錯誤時,核心思路是:
檢查是否安裝了PDO 和對應數據庫驅動擴展。
確認擴展是否被正確加載。
檢查PHP 版本和環境配置是否一致。
重啟服務器或PHP 服務,確保配置生效。
查看日誌和phpinfo() ,尋找線索。
掌握這些排查步驟,絕大多數問題都能迎刃而解。希望這篇文章對你在使用PDO 過程中遇到的問題有所幫助!