Symfony2:学说“找不到驱动程序”

Posted

技术标签:

【中文标题】Symfony2:学说“找不到驱动程序”【英文标题】:Symfony2 : Doctrine "could not find driver" 【发布时间】:2015-05-21 14:07:34 【问题描述】:

两天前,我开始使用 Symfony 编写一个 web 应用程序。现在,我正在尝试使用 Doctrine 来保存一个新用户(我已经使用命令 php app/console doctrine:generate:entities 在我的数据库中创建了一个实体和“链接”表)。

当我在订阅表单上使用 POST HTTP 请求时,Symfony 告诉我:

找不到驱动程序

500 内部服务器错误 - PDOException

我在 Google 和这里​​找到了很多解决方案,但都没有奏效:/

php -m 命令给了我:

...

PDO

pdo_mysql

...

我不明白为什么这不起作用,因为 Doctrine 可以生成用户实体并连接到 mysql 数据库(因为它在其中创建了一个名为“用户”的表)。

phpinfo() 告诉我“PDO 驱动程序”“没有价值”。我想这就是我遇到问题的原因。

另外,它告诉我:

配置文件(php.ini)路径:/etc/php5/cli

加载的配置文件:/etc/php5/cli/php.ini

我在文件“/etc/php5/cli/php.ini”中添加了以下几行,并使用“/etc/init.d/apache2 restart”命令重新启动了 apache 服务器,但它没有任何改变 =/

extension=php_mysql.so

extension=php_mysqli.so

extension=php_pdo_mysql.so

extension=pdo.so

"php --ini" 现在产生:

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php5/20100525/php_mysql.so' - /usr/lib/php5/20100525/php_mysql.so:无法打开共享对象文件:没有这样的第 0 行 Unknown 中的文件或目录

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php5/20100525/php_mysqli.so' - /usr/lib/php5/20100525/php_mysqli.so:无法打开共享对象文件:没有这样的第 0 行 Unknown 中的文件或目录

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php5/20100525/php_pdo_mysql.so' - /usr/lib/php5/20100525/php_pdo_mysql.so:无法打开共享对象文件:没有这样的第 0 行 Unknown 中的文件或目录

PHP 警告:模块“PDO”已加载到第 0 行的未知中

配置文件(php.ini)路径:/etc/php5/cli

加载的配置文件:/etc/php5/cli/php.ini

在 /etc/php5/cli/conf.d 中扫描其他 .ini 文件

解析的其他 .ini 文件:/etc/php5/cli/conf.d/10-pdo.ini,

/etc/php5/cli/conf.d/20-curl.ini,

/etc/php5/cli/conf.d/20-gd.ini,

/etc/php5/cli/conf.d/20-mysql.ini,

/etc/php5/cli/conf.d/20-mysqli.ini,

/etc/php5/cli/conf.d/20-pdo_mysql.ini,

/etc/php5/cli/conf.d/20-pdo_pgsql.ini,

/etc/php5/cli/conf.d/20-pdo_sqlite.ini,

/etc/php5/cli/conf.d/20-pgsql.ini,

/etc/php5/cli/conf.d/20-sqlite3.ini

pdo 驱动程序应该在哪里?我想我错过了什么?

【问题讨论】:

确保扩展名在 php.ini 中注册,用于您的 Web 服务器以及命令行。命令行和 apache/php-fpm/cgi 可能有不同的 php.ini 配置文件。 并浏览到它。这将帮助您确认@JakubZalas 的建议。 命令行“php --ini”产生了什么? 你找到答案了吗?如果是这样,我很想知道,因为我遇到了同样的问题。 【参考方案1】:

您的问题很可能是由于没有为网络服务器的 PHP 启用 pdo。 PHP 可以为 CLI 和 webserver 提供不同的配置。您的所有输出都来自 PHP CLI。但是您的 CLI 的 php.ini 很好,这就是控制台工作的原因。是 CGI 或 FPM 设置不正确。

您需要找到 CGI 或 FPM php.ini(位置可能会根据您的设置而变化 - 请参阅 this answer 了解更多信息)并确保您要使用的 PDO 和 PDO 驱动程序已启用。

【讨论】:

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

Symfony2 学说清除缓存

学说查询的语法错误 (Symfony2)

Symfony2,学说和数据域

未定义索引:joinColumns 学说 + symfony2

Symfony2 和空关系的学说

symfony2 学说加入