【问题标题】:PDOException “could not find driver” in phpphp中的PDOException“找不到驱动程序”
【发布时间】: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
----
----

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

【问题讨论】:

    标签: php mysql symfony


    【解决方案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
          

          【讨论】:

            猜你喜欢
            • 2016-08-30
            • 2023-03-27
            • 2018-05-01
            • 2016-01-13
            • 2018-12-29
            • 2016-09-03
            • 2022-01-23
            相关资源
            最近更新 更多