【问题标题】:Php in Symfony and php run from the command line are loading different driversSymfony 中的 php 和从命令行运行的 php 正在加载不同的驱动程序
【发布时间】:2017-02-16 00:25:35
【问题描述】:

我正在尝试连接到远程 sql 服务器,并且已通过命令行成功连接。当运行php -i | grep PDO我得到 ​​p>

PDO
PDO support => enabled
PDO drivers => sqlsrv, dblib, mysql
PDO Driver for FreeTDS/Sybase DB-lib => enabled
PDO Driver for MySQL => enabled`

从命令行运行 php 脚本时,我可以毫无问题地连接到远程数据库。在我的 Symfony 应用程序中运行完全相同的代码时,我得到了

[Doctrine\DBAL\Driver\PDOException]                              
SQLSTATE[01002] Adaptive Server connection failed (severity 9) 

当我在 Symfony 中运行 phpinfo() 时,出现的唯一 PDO 驱动程序是 mysql

当我从命令行运行 phpinfo() 时,我得到了 mysql、sqlsrv 和 dblib

为什么某些 pdo 驱动程序没有在 Symfony 中加载?

编辑:当php bin/console doctrine:query:sql "SELECT * FROM my_table" 返回结果时,数据库在 Symfony 中被正确配置。在 Symfony 中执行的相同查询出现“无法加载驱动程序”的错误

【问题讨论】:

  • 您的系统上有两个不同的 php.ini 文件。运行 php --ini 并将其与通过 phpinfo 列出的路径进行比较
  • @cerad,都显示/etc/php/7.0/cli/php.ini作为加载的配置文件
  • 启用的模组也可以不同。检查 /etc/php/7.0/apache 或 fpm 或任何文件夹,看看是否启用了 pdo mod,就像它在 cli 文件夹中一样
  • 只是为了笑,尝试运行内置的 symfony 服务器 bin/console server:run 它确实不应该有任何区别,但由于某种原因,您的服务器正在从其他地方获取 php 配置信息。你在做某种码头工人或流浪者的事情吗?

标签: php sql sql-server pdo symfony


【解决方案1】:

您是否在 symfony 项目的 app/config.yml 文件中提到了那些 pdo 驱动程序?

你需要告诉 symfony(也就是把它写在 config.yml 文件中)这些驱动程序,以便他识别和使用它们。

看看这个话题,它可能会对你有所帮助,它是关于使用 mysql pdo 驱动程序和 postgresql pdo 驱动程序

Use a postgres database with symfony3

【讨论】:

  • 我有,但这让我找到了解决方案。事实证明,您不能直接将驱动程序设置为“dblib”,但这个link 创建了一个您可以使用的驱动程序类。感谢您让我到达那里,标记为正确
  • 从头开始,实际上并没有把我带到那里。我能够使用教义连接到数据库,但同样,只能从命令行使用 bin/console。当我在应用程序中运行查询时,我得到“无法加载驱动程序”
猜你喜欢
  • 2019-01-14
  • 2021-06-20
  • 2018-11-20
  • 2015-04-12
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多