当前位置:  开发笔记 > 编程语言 > 正文

PDOException"找不到驱动程序"

如何解决《PDOException"找不到驱动程序"》经验,为你挑选了10个好方法。

我刚刚用Apache,MySQL和PHP安装了Debian Lenny,我收到了一个PDOException could not find driver.

这是它所指的特定代码行:

$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安装有关吗?

搜索互联网没有帮助,我得到的只是专家交流和示例,但没有解决方案.



1> ZZ Coder..:

您需要一个名为pdo_mysql的模块.在phpinfo()中寻找以下内容,

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44


对于Ubuntu 16.04和PHP7,使用`sudo apt-get install php-mysql`
我可以推荐Ubuntu"php5-mysql"包来安装MySQL的PDO支持
@letseatfood ......你是怎么想出来的?我遇到了同样的问题!
请注意,对于那些使用Apache或其他Web服务器的人,需要重新启动Apache才能使更改生效:`sudo systemctl restart httpd.service`
@ZZ Coder这在phpinfo()中不存在。你知道我该怎么安装`pdo_mysql`吗?

2> ghbarratt..:

代码中的dsn显示您正在尝试连接mysql驱动程序.您的错误消息表明此驱动程序不可用.

检查您的服务器上是否安装了mysql扩展.

在Ubuntu/Debian中,您可以检查包裹:

dpkg --get-selections | grep php | grep mysql

如果你没有安装php5-mysql软件包.

在Ubuntu/Debian中你可以使用:

PHP5: sudo apt-get install php5-mysql

PHP7: sudo apt-get install php7.0-mysql

最后,要使其正常工作,您需要重新启动Web服务器:

阿帕奇: sudo /etc/init.d/apache2 restart

Nginx的: sudo /etc/init.d/nginx restart


工作完美的sudo apt-get安装php5-mysql
啊......重启是我的一点点!

3> Sudipta Chat..:

更新:较新的版本应该使用php-sqlite3包而不是php5-sqlite.因此,如果您使用的是最近的ubuntu版本,请使用此方法:

sudo apt-get install sqlite php-sqlite3

问题的原始答案在这里:

sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart

如果你的phpinfo()没有显示pdo_sqlite行(在我的情况下,在我的Ubuntu服务器上),你只需要运行上面的行,然后就可以了.


当OP使用MySQL时,为什么给出sqlite的说明?
@Andrew如果使用`pdo_sqlite`并且没有安装`php5-sqlite`你只得到一个`PDOException`,没有关于缺少sqlite的信息,并尝试两次安装`php5-mysql`.
请注意,php5-sqlite已经过时,可能不再适用于您的系统,即Ubuntu 16.04.改为安装php-sqlite3.
@briankip当然是,如果你正在尝试连接到SQLite并且缺少该驱动程序.但OP正在尝试连接MySQL.安装sqlite会/不能解决他的问题.

4> ThomasAFink..:

对于具有PHP 7.0的较新版本的Ubuntu,您可以获得该php-mysql包:

sudo apt-get install php-mysql

然后重启服务器:

sudo service apache2 restart



5> 小智..:

在我的Windows机器上,我必须在php.ini中给出扩展目录的绝对路径:

extension_dir = "c:\php5\ext"


我刚刚确认这是真的(Win2008).奇怪 - 其他扩展仅使用推荐的`extension_dir ="ext"`,但不是这个.

6> 小智..:

我遇到过同样的问题.解决方案取决于操作系统.就我而言,我有debian,所以要解决它:

更新了我的php版本(php5到php7)

安装php-mysql和php7.0-mysql

apt-get install php-mysql
apt-get install php7.0-mysql

php.ini在/etc/php/7.0/apache2/php.ini 编辑了我的位置

uncomment the line : extension=php_pdo_mysql.dll

然后重启apache:

service apache2 restart

这解决了我的问题



7> Dmitry Sobol..:

在Ubuntu上执行

sudo apt-get install php5-mysql


对我来说,我缺乏Postgresql,所以它最终成为:`sudo apt-get install php5-pgsql`

8> 小智..:
sudo apt-get install php-mysql 

在ubuntu和php 7上运行良好



9> cem..:

如果MySQL和驱动程序安装正确,你检查了你的php.ini(用phpinfo()检查正确的位置)吗?


我正在寻找php.ini,但是我应该寻找什么?我看到以“ [MySQL]”开头的部分

10> 小智..:

将这些添加到php.ini中时确保在db驱动程序dll之前首先引用php_pdo.dll,否则这也会导致此错误消息.像这样添加它们:

[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll


从PHP v5.3开始,不再需要php_pdo.dll模块(不存在)。http://php.net/manual/zh/pdo.installation.php可能是这个问题的最终答案。
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有