laravel 10 启动即崩主因是 cli 模式下未启用 pdo 及对应驱动(如 pdo_mysql),需通过 php --ini 确认配置文件路径,编辑对应 php.ini 取消 extension=pdo 和 extension=pdo_mysql 等注释,并执行 php -m 验证输出。

因为 Laravel 10 在安装或启动时会立即加载核心服务容器,而 PDO 扩展是框架数据库抽象层(Database Abstraction Layer)的底层依赖,没有它,连 Application 类初始化都会失败——不是“用到才报错”,而是“一启动就崩”。
为什么明明装了 PHP 却提示 PDO 缺失
常见原因不是没装,而是没在 CLI 模式下启用:
- Web 服务器(如 Apache/Nginx)用的 php.ini 和命令行(CLI)用的不是同一个配置文件,运行
php --ini查看 “Loaded Configuration File”,确认你修改的是 CLI 对应的 php.ini - Windows 用户常漏掉 php.ini 中的
extension=pdo和extension=pdo_mysql(或pdo_pgsql),这两行前面的分号没去掉 - Linux/macOS 下只装了 PHP 主包,但没单独安装扩展包,比如 Ubuntu 上需额外执行
sudo apt install php8.1-pdo php8.1-mysql - 使用 Docker 或多版本 PHP 环境时,
composer create-project调用的 PHP 可能不是你预期的那个版本或路径
PDO 相关扩展必须同时启用
Laravel 10 要求的不只是 pdo,还需至少一个具体驱动,否则仍会报 could not find driver:
-
pdo(必需):提供统一接口 -
pdo_mysql(MySQL 用户必开) -
pdo_pgsql(PostgreSQL 用户必开) -
pdo_sqlite(本地开发常用,轻量测试可用)
快速验证和修复方法
在终端中逐条执行,确认真实环境状态:
- 查 CLI 使用的配置:
php --ini - 查已启用扩展:
php -m | grep -E "pdo|mysql|pgsql|sqlite" - 若无输出,编辑对应 php.ini,取消注释相关 extension 行,保存后重启终端(非浏览器)
- Ubuntu/Debian 安装示例:
sudo apt install php8.1-pdo php8.1-mysql - Mac(Homebrew):
brew install php@8.1后确保 PATH 正确,并检查php -m输出
只要 CLI 模式下 php -m | grep pdo 有输出,且对应数据库驱动(如 mysql)也在其中,Laravel 10 就不会再卡在 PDO 缺失这一步。











