带有 mssql 的 PHP 连接失败(Windows 身份验证)

Posted

技术标签:

【中文标题】带有 mssql 的 PHP 连接失败(Windows 身份验证)【英文标题】:PHP with mssql connection fail (windows auth) 【发布时间】:2019-03-20 14:09:38 【问题描述】:

我正在尝试从 php 连接到 mssql 数据库。 我已经为此安装了驱动程序。

现在我遇到以下错误:

Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 13 for SQL服务器][SQL Server]用户 'domain\user' 登录失败。[消息] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]用户 'domain\user' 登录失败。)[1] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]登录失败对于用户 'domain\user'。[message] => [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]用户 'domain\user' 登录失败。))

我有什么遗漏的吗?

编辑: 我的连接字符串:

$serverName = "server, port";

$connectionInfo = array( "Database"=>"my_database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn == false)
 
 echo "Unable to connect.<br />";
 die( print_r( sqlsrv_errors(), true));
 

编辑 2:

带有用户和密码的代码示例

$serverName = "server, port"; //serverName\instanceName
$connectionInfo = array( "Database"=>"my_database", "UID"=>"domain\user", "PWD"=>"my_pw");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) 
 echo "Connection OK.<br />";
else
 echo "Unable to connect.<br />";
 die( print_r( sqlsrv_errors(), true));

【问题讨论】:

你能发布你的代码吗? @Zhorov 添加了代码示例 【参考方案1】:

不得不修改 wampapaches 服务中的身份验证方法。我把我的用户放在那里并通过并且工作正常。

【讨论】:

【参考方案2】:

我遇到了类似的问题。我有一个 php 脚本来访问由供应商托管的 mssql 数据库。我们不能使用 Windows 身份验证。用户名和密码是有效的,因为它适用于 python。我们发现供应商提供的密码中包含一个 $,在 PHP 中表示一个变量。我们将密码周围的双引号更改为单引号,并且它起作用了。这是由于服务器打开了魔术引号引起的,解决方法是使用单引号强制 PHP 将密码识别为字符串。

【讨论】:

以上是关于带有 mssql 的 PHP 连接失败(Windows 身份验证)的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Ubuntu 18.04 使用 PHP 连接到 MSSQL Server?

PHP mssql_bind 传递钱数据类型失败

查询失败(使用 mssql_query() 和 php 时)

php连接MSSQL

PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)

PHP连接mssql问题