Ubuntu命令行运行PHP脚本出现PDOException: could not find driver求助
解决Ubuntu命令行PHP脚本PDO MySQL驱动缺失问题
嘿,这个问题我太熟了!你遇到的情况本质是Ubuntu里Apache的PHP环境和命令行(CLI)的PHP环境是完全分开的——浏览器能正常运行说明Web环境的PHP已经装了PDO MySQL驱动,但CLI版本的PHP没装对应的驱动包,所以才会抛出"could not find driver"异常。
下面是一步步的解决方法:
1. 确认命令行PHP的版本
首先得搞清楚你CLI用的是哪个版本的PHP,因为Ubuntu可能同时装了多个PHP版本。在终端运行:
php -v
比如输出可能是PHP 8.1.2-1ubuntu2.14 (cli),那你的版本就是8.1。
2. 安装对应版本的PDO MySQL驱动
根据你刚才查到的PHP版本,安装对应的mysql驱动包。比如PHP8.1就运行:
sudo apt-get update && sudo apt-get install php8.1-mysql
如果是PHP7.4就换成php7.4-mysql,以此类推。
3. 验证驱动是否成功加载
安装完成后,运行下面的命令查看CLI PHP加载的模块:
php -m
在输出列表里找pdo_mysql,如果能看到这个条目,说明驱动已经成功加载了。
4. 重新测试你的脚本
现在再运行你的测试脚本:
php /var/www/test.php
应该就能正常连接MySQL了,不会再抛出驱动找不到的异常。
补充说明
- 如果你是通过第三方PPA(比如ondrej/php)安装的PHP,也要确保安装对应版本的
phpX.X-mysql包,和官方源的安装命令一致。 - 不需要重启任何服务,因为CLI PHP每次运行都会重新加载配置,安装完驱动直接生效。
附你的测试代码(方便参考):
<?php $username = "root"; $pwd = "test"; try { $pdo = new PDO("mysql:host=localhost;port=3306;dbname=db", $username, $pwd, [PDO::ATTR_PERSISTENT => true]); } catch (PDOException $e) { die("Connect Error Infomation:" . $e->getMessage()); }
内容的提问来源于stack exchange,提问作者Yancey
相关产品推荐
相关产品推荐

