带有 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?
查询失败(使用 mssql_query() 和 php 时)