如何在 PHP 7+ 中为 SQL 服务器启用 ODBC 驱动程序 17?

How to enable ODBC Driver 17 for SQL Server in PHP 7+?

我是 运行 CentOS 7,所以我按照这里的说明(对于 RHEL 7 条目)进行了操作,每一步都成功了。

Link 我关注了:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

我现在有点卡住了,因为我知道我必须在 PHP (v7.2.9) 端配置一些东西才能进入 "see" 此安装。我不知道 "extension(s)" 实际安装到哪里,所以我不确定如何修改 PHP.ini 文件,也不知道如何在 PHP 中设置连接字符串测试一下。

我目前正在使用 odbc_connect() 进行测试(是否有帮助)。

您能否提供遵循上述 link 说明后的步骤?

好吧,正如通常发生的那样,在一位好友提醒我有关 /etc/odbcinst.ini 文件后,我进行了一些挖掘并找到了答案...供未来的 Google 员工和 So'ers 使用:

  1. sudo vi /etc/odbcinst.ini

您应该会看到类似这样的内容(假设您按照 Distro 的说明没有任何错误地进行了操作 - link 原文 post):

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1

所以...一旦确认,创建一个基本 PHP 文件进行测试。我在这里使用 PHP 7.2.9:

<?php

// Configuration Settings for connection to Database
$host = 'SERVERNAME';
$user = 'dbuser';
$pass = 'dbpass';
$db   = 'InstanceName';
$conn = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=$host;PORT=1433;DATABASE=$db";

// Open connection
$db_connect = odbc_connect($conn, $user, $pass);

// Check for successful connection
if ( $db_connect ) {
    echo 'Beer time!';
} else {
    die('Error connecting...');
}

?>

重要的部分是确保驱动程序的 "name" 显示在 odbcinst 文件的 [] 之间,与您在 PHP 的连接字符串中使用的驱动程序的名称相匹配{} 之间的文件。在这种情况下(默认),它是 "ODBC Driver 17 for SQL Server".

希望对其他人有所帮助。我挣扎了一会儿。