我刚刚安装了Debian Lenny与Apache, MySQL和PHP,我收到一个PDOException无法找到驱动程序。

这是它所引用的特定代码行:

$dbh = new PDO('mysql:host=')。DB_HOST。”;dbname = '。Db_name, db_user, db_pass)

DB_HOST、DB_NAME、DB_USER和DB_PASS是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。

这与我的PHP安装有关吗?

在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。


当前回答

在Ubuntu上执行

sudo apt-get install php5-mysql

其他回答

我花了最后一天的时间试图弄清楚为什么我会得到以下错误。我运行的是Ubuntu 14.04。

存在的问题: 我注意到我的php - cli版本运行的是php7.0,但php_info() (web版本)显示的是php 5.5.9。尽管php_info()说pdo已启用,但使用命令行(CLI)无法识别pdo_mysql命令。原来我的旧版本启用了mysql,但CLI版本没有启用。我所做的就是为php7.0安装mysql,它就可以工作了。

这是有效的方法:

查看版本信息:

php -v

安装mysql for php7.0

sudo apt-get install php7.0-mysql

1)确保你的CLI版本与你的网页版本相同 2)如果它们是不同的,确保你的CLI版本有mysql插件,因为它没有作为默认提供。

对于有PHP 7.0的新版本的Ubuntu,你可以得到PHP -mysql包:

sudo apt-get install php-mysql

然后重新启动服务器:

sudo service apache2 restart

还有一件事需要确认,因为有些人是从互联网上复制/粘贴示例代码来开始的。确保你在这里输入了MySQL:

... $dbh = new PDO ("mysql: ...  

在一些例子中可以看到

$dbh = new PDO ("dblib ...

我强烈推荐mysqllnd而不是mysql,因为你会有很多问题,如数字转换和位类型计算的问题与mysql扩展。

在ubuntu上使用以下命令安装mysqllnd:

sudo apt-get install php5-mysqlnd

如果您正在使用sqlite进行测试,您将需要php sqlite pdo驱动器。 您可以按照下面的方法安装它们。

Ubuntu 14.04

sudo apt-get install php5-sqlite
sudo service apache2 restart

在ubuntu 16.04中没有php5-sqlite

sudo apt-get install php7.0-sqlite
sudo service apache2 restart