Ubuntu/Debian服务器Laravel队列报PDOException找不到驱动问题求助
解决Laravel定时队列任务PDO驱动缺失问题
核心原因
Laravel的定时队列任务通过**PHP CLI(命令行接口)**执行,你之前验证的是Web环境的PHP配置,两者使用的php.ini文件大概率不同,导致CLI环境下未启用PDO MySQL驱动。
排查与修复步骤
确认CLI版本的PHP是否安装PDO MySQL驱动
执行命令查看CLI环境的PHP扩展状态:php8.1 -m | grep pdo如果输出里没有
pdo_mysql,说明CLI版本的驱动未安装。安装CLI环境的PDO MySQL驱动
在Debian/Ubuntu上执行:sudo apt update sudo apt install php8.1-mysql这个包同时覆盖Web和CLI环境的PDO驱动需求。
验证CLI环境的php.ini配置
先查看CLI模式加载的php.ini路径:php8.1 --ini找到
Loaded Configuration File对应的路径,打开该文件确认extension=pdo_mysql行未被注释(去掉行首的;符号)。重启相关服务
如果用Supervisor管理队列进程,执行:sudo supervisorctl restart all若直接使用
queue:work命令运行队列,重启该进程即可。测试定时任务
手动触发测试或执行:php artisan schedule:run检查是否还出现PDO驱动错误。
额外注意事项
- Web和CLI的PHP配置文件通常位于不同目录,比如Web环境的在
/etc/php/8.1/apache2,CLI环境的在/etc/php/8.1/cli,不要混淆。 - 安装扩展后无需重启服务器,只需重启Web服务或队列进程即可生效。
内容的提问来源于stack exchange,提问作者Nadja Schnabel
相关产品推荐
相关产品推荐

