如何在PHP 7+中为SQL Server启用ODBC Driver 17?

时间:2018-08-18 00:22:44

标签: sql-server sql-server-2016 php-7.2

我正在运行CentOS 7,因此我按照此处的说明进行操作(针对RHEL 7条目),并且在每个步骤都成功完成了。

我关注的链接: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)端进行配置,才能“看到”此安装。我不知道“扩展名”的实际安装位​​置,因此我不确定如何修改PHP.ini文件,也不确定如何在PHP中设置连接字符串以进行测试。 / p>

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

遵循上述链接的说明后,您可以提供步骤吗?

1 个答案:

答案 0 :(得分:0)

好吧,就像平常发生的那样,做了一些挖掘,并且在一个哥们提醒我有关/etc/odbcinst.ini文件的信息之后找到了答案……供将来的Google员工和So'ers使用:

  1. sudo vi /etc/odbcinst.ini

您应该看到类似这样的信息(假设您按照发行版T发行版的说明进行操作,没有任何错误-原始帖子中的链接):

[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...');
}

?>

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

希望可以帮助其他人。我为此挣扎了一段时间。