【问题标题】:Symfony 3 MySQL driver 'could not find driver'Symfony 3 MySQL 驱动程序“找不到驱动程序”
【发布时间】:2016-07-14 19:39:03
【问题描述】:

我实际上在使用 Symfony 3 和 PDO 驱动程序时遇到了一些困难。

这是我使用 Symfony 3 的第一个项目(在那之前我使用过 Symfony 2),当我想使用 Doctrine 或 FOSUserBundle 时出现此错误:

找不到驱动程序

500内部 服务器错误 - PDOException

我检查了哪里出了问题,我发现这是一个错误: /path-to-project/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql

当 PDO 类无法访问数据库服务器时,这是一个简单的 PDOException 抛出。 但是我可以毫无问题地执行此代码 带有“$> php test.php”

$pdo = new PDO("mysql:dbname=Accounting;host=127.0.0.1","<user>", "<secret>");
$sql = 'SELECT * FROM Accounting.fos_user;';
echo count($pdo->query($sql));

这个错误是由相同的代码引发的,由 Symfony 3 执行(通过 Doctrine 并在一个简单的控制器中测试)。


这是我的参数:
# app/config/parameters.yml
parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 3306
    database_name: Accounting
    database_user: <user>
    database_password: <secret>

# app/config/config.yml
# Doctrine Configuration
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #     path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: UserBundle\Entity\User

编辑 2016 年 3 月 29 日

操作系统配置:虚拟机上的 Ubuntu 14-04

【问题讨论】:

  • 您在cli/php.ini 中启用了pdo_mysql,但在fpm/php.ini 中未启用,这就是为什么在命令行中工作,而不是在网络浏览器中的原因。您需要将此行添加到 php.ini:extension=pdo_mysql.so
  • 我使用的是 Ubuntu,文件夹 /etc/php5/fpm 不存在。也许我应该为php安装一个包/插件?我尝试cp -r /etc/php5/cli /etc/php5/fpm,但问题仍然存在。 〜感谢您的贡献
  • 对不起,我的意思是 cgi 不是 cli。你在 php5/cli/php.ini 中启用了扩展吗?
  • pdo.so 和 pdo_mysql,在 cli 中是的。我回来后会检查cgi文件夹。
  • 在 cli/conf.d 和 cgi/conf.d 中对于 pdo.so 和 pdo_mysql.so ~ty 都是相同的,因为你的贡献

标签: php mysql symfony pdo doctrine-orm


【解决方案1】:

我会回答我自己的问题。发生此问题是因为我尝试在 container 上使用 symfony 和 mysql pdo 驱动程序(形成虚拟化)。当我在真实 VM(= 完全虚拟化虚拟机)上使用相同的设置时,它可以正常工作。找到驱动程序,我们可以在 Symfony 3 项目中创建 pdo。

测试了 10/04/2016

Ty malcolm 的帮助,感谢你,我学到了一些东西 :)

问候,Dykoine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2017-09-01
    相关资源
    最近更新 更多