【发布时间】: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