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 过程中遇到的问题有所帮助!