使用 Doctrine pdo_sqlsrv 连接到数据库

Álv*_*aro 1 php doctrine symfony symfony-3.2 symfony-3.3

我正在尝试在 SQL Server 2000 中连接到我的数据库,但出现错误

找不到驱动程序

当我使用 pdo_sqlsrv 时。但是如果我使用 sqlsrv 我会得到一个错误

试图从命名空间“Doctrine\DBAL\Driver\SQLSrv”调用函数“sqlsrv_configure”。

这是我的 config.yml

配置文件

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                dbname: "%database_name%"
                user: "%database_user%"
                password: "%database_password%"
                host: "%database_host%"
                driver:   pdo_mysql
                charset:  utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
            connection2:
                dbname: "%database_name2%"
                user: "%database_user2%"
                password: "%database_password2%"
                host: "%database_host2%"
                driver:  pdo_sqlsrv
                #driver:  sqlsrv  i've also tried this
                #charset:  utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
Run Code Online (Sandbox Code Playgroud)

有人知道为什么我会收到这些错误吗?

小智 5

如果找不到 sqlsrv_configure 函数,则说明未安装 sqlsrv 扩展。可以在此处的官方 Microsoft 存储库中找到它

您可以通过php -m在终端中运行命令来检查是否已安装扩展。请注意,如果您在独立服务器(例如 MAMP、XAMP 或任何其他使用非 CLI 版本的 PHP)上运行 Symfony,那么 CLI 和独立服务器使用的扩展可能会有所不同。

您可以通过转到 Symfony 中的分析器(/_profiler默认情况下)并单击Configuration菜单项下的“查看完整的 PHP 配置”链接来测试这一点。这将打开phpinfo()屏幕。在那里寻找sqlsrvpdo_sqlsrv扩展名。

编辑

再次查看Doctrine 文档,似乎pdo_sqlsrv会导致问题。Doctrine 建议使用sqlsrv.

pdo_sqlsrv: 使用pdo_sqlsrvPDO 的Microsoft SQL Server 驱动程序请注意,此驱动程序在我们的测试中引起了问题。如果可能,最好使用 sqlsrv 驱动程序。

(重点不是我的)