Mik*_*ore 274 php mysql lamp pdo
我刚刚用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安装有关吗?
搜索互联网没有帮助,我得到的只是专家交流和示例,但没有解决方案.
ZZ *_*der 221
您需要一个名为pdo_mysql的模块.在phpinfo()中寻找以下内容,
pdo_mysql
PDO Driver for MySQL, client library version => 5.1.44
Run Code Online (Sandbox Code Playgroud)
ghb*_*att 189
代码中的dsn显示您正在尝试连接mysql驱动程序.您的错误消息表明此驱动程序不可用.
检查您的服务器上是否安装了mysql扩展.
在Ubuntu/Debian中,您可以检查包裹:
dpkg --get-selections | grep php | grep mysql
Run Code Online (Sandbox Code Playgroud)
如果你没有安装php5-mysql软件包.
在Ubuntu/Debian中你可以使用:
sudo apt-get install php5-mysqlsudo apt-get install php7.0-mysql最后,要使其正常工作,您需要重新启动Web服务器:
sudo /etc/init.d/apache2 restartsudo /etc/init.d/nginx restartSud*_*jee 78
更新:较新的版本应该使用php-sqlite3包而不是php5-sqlite.因此,如果您使用的是最近的ubuntu版本,请使用此方法:
sudo apt-get install sqlite php-sqlite3
Run Code Online (Sandbox Code Playgroud)
问题的原始答案在这里:
sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
如果你的phpinfo()没有显示pdo_sqlite行(在我的情况下,在我的Ubuntu服务器上),你只需要运行上面的行,然后就可以了.
Tho*_*ink 30
对于具有PHP 7.0的较新版本的Ubuntu,您可以获得该php-mysql包:
sudo apt-get install php-mysql
Run Code Online (Sandbox Code Playgroud)
然后重启服务器:
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
小智 21
在我的Windows机器上,我必须在php.ini中给出扩展目录的绝对路径:
extension_dir = "c:\php5\ext"
小智 21
我遇到过同样的问题.解决方案取决于操作系统.就我而言,我有debian,所以要解决它:
安装php-mysql和php7.0-mysql
apt-get install php-mysql
apt-get install php7.0-mysql
Run Code Online (Sandbox Code Playgroud)我php.ini在/etc/php/7.0/apache2/php.ini 编辑了我的位置
uncomment the line : extension=php_pdo_mysql.dll
Run Code Online (Sandbox Code Playgroud)然后重启apache:
service apache2 restart
Run Code Online (Sandbox Code Playgroud)这解决了我的问题
Dmi*_*lev 14
在Ubuntu上执行
sudo apt-get install php5-mysql
Run Code Online (Sandbox Code Playgroud)
Pra*_*tik 14
检查模块是否可用php -m | grep pdo_mysql。
如果没有,对于 PHP 7.2,您可以使用sudo apt install php7.2-mysql.
在其他 PHP 版本和包管理器上使用类似的命令。
如果MySQL和驱动程序安装正确,你检查了你的php.ini(用phpinfo()检查正确的位置)吗?
对于PHP 5.5有关CentOS我通过安装固定的这个php55-mysqlnd包。
sudo yum -y install php55w-mysqlnd # For Webtatic
sudo yum -y install php55u-mysqlnd # For Remi
Run Code Online (Sandbox Code Playgroud)
如需帮助安装,请写一条评论,因为这取决于 PHP 在您的系统上的安装方式。可用的 repo 是webtatic和remi。
小智 5
将这些添加到php.ini中时确保在db驱动程序dll之前首先引用php_pdo.dll,否则这也会导致此错误消息.像这样添加它们:
[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
Run Code Online (Sandbox Code Playgroud)