PHP 7.0+ 已内置 PDO 扩展,只需在 php.ini 中取消 extension=pdo.so(Linux/macOS)或 extension=pdo(PHP 8.0+ NTS Windows)等对应行的注释,重启服务并用 test_pdo.php 验证 CLI 与 Web 环境一致性。

PHP 本地环境默认不启用 PDO 扩展,但绝大多数现代 PHP 版本(7.0+)已内置该扩展,只需在配置中启用即可——不是重装 PHP,也不是手动编译,更不需要下载 DLL 或 SO 文件。
确认 PHP 是否已自带 PDO 扩展
运行 php -m | grep pdo(Linux/macOS)或 php -m(Windows,然后人工查找),若输出含 pdo、pdo_mysql、pdo_sqlite 等,说明扩展已安装,只是未启用。若完全无 pdo 字样,需确认 PHP 安装包是否为“minimal”精简版(如某些 Windows ZIP 包可能剔除了扩展)。
-
php -i | grep "Loaded Configuration File"查出当前生效的php.ini路径 - 打开该
php.ini,搜索extension=php_pdo.dll(Windows)或extension=pdo.so(Linux/macOS) - 若该行被分号注释(如
;extension=php_pdo.dll),去掉分号即可
Windows 下启用 PDO 的常见路径与命名差异
Windows 的 php.ini 中扩展名依赖 PHP 版本和线程安全(TS/NTS)类型,不能硬套旧教程里的名字。例如:
- PHP 8.0+ NTS 版:用
extension=pdo(无需后缀)或extension=php_pdo.dll - PHP 7.x TS 版:通常仍为
extension=php_pdo.dll - 若启用 MySQL 支持,还需同时开启
extension=pdo_mysql(或extension=php_pdo_mysql.dll) - 错误示例:
extension=php_pdo_mysql(缺.dll)在 Windows 下会静默失败,php -m不报错但也不加载
macOS/Linux 使用 Homebrew 或系统包管理器时的注意事项
Homebrew 安装的 PHP(如 php@8.2)默认已启用 PDO,但如果你用的是系统自带 PHP(如 macOS 12+ 自带的 PHP 8.1),它通常禁用了所有扩展。此时:
立即学习“PHP免费学习笔记(深入)”;
- 不要修改系统
/etc/php.ini(可能被覆盖),应使用 Homebrew 提供的配置:路径类似/opt/homebrew/etc/php/8.2/php.ini - Linux 发行版(如 Ubuntu)通过
apt install php-pdo安装后,会自动在/etc/php/*/cli/conf.d/10-pdo.ini中写入启用项,无需手动改php.ini - 重启服务:CLI 下改完配置后直接运行新命令即可;若用 Apache,需
sudo systemctl restart apache2;若用 Nginx + PHP-FPM,则重启php-fpm服务
验证是否真正生效,而不仅是配置“看起来对”
光看 php -m 不够,因为 CLI 和 Web SAPI 可能加载不同配置。务必用实际脚本测试:
把这段代码保存为 test_pdo.php,用浏览器访问(Web 环境)或 php test_pdo.php(CLI),结果必须一致。常见陷阱是:CLI 启用了,但 Apache 没重启,或 phpinfo() 显示的 Loaded Configuration File 和你编辑的 php.ini 不是同一个文件。
最常被忽略的一点:有些集成环境(如 XAMPP、MAMP、WampServer)提供图形化开关,但它们只改自己封装的配置,和系统级 php.ini 无关;切换前先确认你操作的是哪个 PHP 实例。











