php中的PDOException“找不到驱动程序”

Posted

技术标签:

【中文标题】php中的PDOException“找不到驱动程序”【英文标题】:PDOException “could not find driver” in php 【发布时间】:2012-03-07 15:59:18 【问题描述】:

我已经在我的 linux 系统上安装了 Lampp,我正在学习 symfony2,同时尝试使用 symfony2 命令创建模式

php app/console doctrine:schema:create

我收到以下错误消息:-

PDOException “could not find driver”

我也在 php.ini 文件中取消注释这一行 extension=php_pdo_mysql.dll

我试图查看和谷歌我的问题,但无法解决我的问题。当我运行php -m 命令时,我得到以下结果:-

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mhash
openssl
pcntl
pcre
PDO
----
----

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

在 Ubuntu 中,在控制台中写入

sudo apt-get install php5-gd php5-mysql

它会起作用的

【讨论】:

php5-gd 我丢失了 =) 安装完所有扩展后,这是我的解决方案,谢谢! 这个成功了,我只需要调整版本sudo apt-get install php5.6-gd php5.6-mysql【参考方案2】:

希望您在 localhost 中运行您的项目。在您的项目文件夹 app/config 中有一个名为 parameters.ini 的文件,确保您的 Mysql 数据库连接配置正确。如果您使用的是 mysql 请参阅database_driver=pdo_mysql 是它的驱动程序。

下面是一个例子。

database_driver   = pdo_mysql
    database_host     = localhost
    database_port     =
    database_name     = databasename
    database_user     = msqlusername
    database_password = mysqlpassword//if not make blank

    mailer_transport  = smtp
    mailer_host       = localhost
    mailer_user       =
    mailer_password   =

    locale            = en

    secret            = ThisTokenIsNotSoSecretChangeIt

希望对你有帮助。

【讨论】:

是的,这有帮助,但是我刚刚改变了这两件事 database_host="127.0.0.1" database_port="3306" 并且它起作用了 除了xampp之外,我还在我的ubuntu matchine上安装了mysql【参考方案3】:

您需要有一个名为pdo_mysql 的模块。

phpinfo() 输出中查找以下内容,

pdo_mysql => MySQL 的 PDO 驱动程序,客户端库版本 => 5.1.44

要安装 pdo_mysql,您需要这样做:

 pecl install pdo
 pecl install pdo_mysql

然后将以下内容添加到您的 php.ini 文件中:

extension=pdo.so
extension=pdo_mysql.so

【讨论】:

嗯,好的。我以为你在linux上。底线是你需要 pdo_mysql 模块来让你的 PDO 工作正常。我不知道lampp。它可以像检查 pdo_mysql dll 文件是否存在一样简单。在您的 ini 文件中取消注释 pdo_mysql.dll 包后重新启动您的 Apache 服务。 我正在使用lampp。一个以自己的方式而不是在默认文件夹中安装 php、appache 和 mysql 的包。这些 cmds 给我错误配置:错误:在错误下找不到 MySQL 头文件:`/tmp/pear/temp/PDO_MYSQL/configure' failed @Jaspreet Chahal,你的答案在 Linux 上有效吗?我对 OP 有同样的问题,但我没有编辑 php.ini 文件的权限。如果您的回答确实有效,我会请求我的主管允许将其包含在php.ini 文件中。【参考方案4】:

brew install php70-pdo-pgsql 如果您在 mac 上使用 brew 安装了 php7,并根据您安装的内容更改 php 版本。

【讨论】:

谢谢这对我有帮助。【参考方案5】:

如果您使用的是 XAMPP,则在 php.ini 文件第 897 行(取决于版本)中,

;extension=php_pdo_pgsql.dll 

取消注释,如下图所示

extension=php_pdo_pgsql.dll 

在 php.ini 文件第 897 行,然后重新启动 XAMPP。

【讨论】:

天哪,最后感谢您!我在网上寻找这个最终对 Windows 系统正确的答案....【参考方案6】:

我的服务器中安装了两个 PHP 版本 PHP 5.6 和 PHP 7

当我运行命令php app/console doctrine:schema:update 时出现错误:[PDOException] could not find driver

我通过指定 PHP 版本解决了这个错误:

php5.6 app/console doctrine:schema:update

【讨论】:

就我而言,我是这样解决的:php7.0 app/console dictionary:schema:update --force【参考方案7】:

看起来您的安装缺少实现 mysql 连接所需的 .so 文件。如果您使用包管理系统来安装 PHP,那么请确保您已经安装了所有必要的子模块(在这种情况下,我认为您将需要 mysql-dev 和各种 PHP PDO 模块),尽管这些依赖项应该有已由包管理器为您解决。

如果您没有通过包管理器,那么您必须从源代码编译所需的 .so 文件。

【讨论】:

【参考方案8】:

我遇到了同样的问题,对我来说,它有多个 PHP 版本。 所以指定PHP的完整地址解决了这个问题。

【讨论】:

【参考方案9】:

添加到 Jaspreet Chahal 的答案。 将 PDO 安装为共享模块时,需要更新 php.ini 文件,以便在 PHP 运行时自动加载 PDO 扩展。您还需要在那里启用任何特定于数据库的驱动程序;确保它们列在 pdo.so 行之后,因为必须在加载特定于数据库的扩展之前初始化 PDO。如果您静态构建 PDO 和特定于数据库的扩展,则可以跳过此步骤 (Source)。 我的意思是,它应该看起来像这样 -

extension=pdo.so 应放在不同数据库驱动程序的扩展之前。

【讨论】:

【参考方案10】:

也许你忘记安装学说/dbal

composer update

composer require doctrine/dbal

如果它不起作用,请转到您的 php.ini(根据当前版本) 并删除 ";"

;extension=pdo_mysql.so

【讨论】:

以上是关于php中的PDOException“找不到驱动程序”的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDOException 找不到驱动程序

php artisan migrate:[PDOException] 找不到驱动程序

PDO:未捕获的 PDOException:找不到驱动程序

PDOException“找不到驱动程序”

PDO 扩展配置 - 我在我的 PHP 应用程序中不断收到 PDOException“找不到驱动程序”

Laravel 和 Postgresql 带有消息“找不到驱动程序”错误的 PDOException