我刚刚用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安装有关吗?
搜索互联网没有帮助,我得到的只是专家交流和示例,但没有解决方案.
您需要一个名为pdo_mysql的模块.在phpinfo()中寻找以下内容,
pdo_mysql PDO Driver for MySQL, client library version => 5.1.44
代码中的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
更新:较新的版本应该使用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服务器上),你只需要运行上面的行,然后就可以了.
对于具有PHP 7.0的较新版本的Ubuntu,您可以获得该php-mysql
包:
sudo apt-get install php-mysql
然后重启服务器:
sudo service apache2 restart
在我的Windows机器上,我必须在php.ini中给出扩展目录的绝对路径:
extension_dir = "c:\php5\ext"
我遇到过同样的问题.解决方案取决于操作系统.就我而言,我有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
这解决了我的问题
在Ubuntu上执行
sudo apt-get install php5-mysql
sudo apt-get install php-mysql
在ubuntu和php 7上运行良好
如果MySQL和驱动程序安装正确,你检查了你的php.ini(用phpinfo()检查正确的位置)吗?
将这些添加到php.ini中时确保在db驱动程序dll之前首先引用php_pdo.dll,否则这也会导致此错误消息.像这样添加它们:
[PHP_PDO] extension=php_pdo.dll [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll