【发布时间】:2019-08-08 00:05:55
【问题描述】:
以下设置:我有一台 Linux (Debian) 机器作为网络服务器 (apache) 和 Windows 上的 MS SQL Server。此外,我无法为此获取 SQL 用户,只能通过 AD/Windows Auth 进行身份验证。
我正在使用按照 Microsoft 的说明安装的 Microsoft ODBC 驱动程序和 sqlsrv 扩展。
我使用主体名称和密码成功运行kinit。
现在,在使用sqlcmd 或什至在使用 sqlsrv_connect 以交互模式 (php -a) 使用 PHP 时,与 MSSQL Server 的基于 Windows-Auth 的连接可以完美运行,但是当我尝试通过 Apache 从 php 文件运行简单示例连接时,它不起作用。我收到这样的错误消息:
Array ( [0] => Array ( [0] => HY000 [SQLSTATE] => HY000 [1] => 851968 [code] => 851968 [2] => [Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_33) [message] => [Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_33) ) [1] => Array ( [0] => HY000 [SQLSTATE] => HY000 [1] => 851968 [code] => 851968 [2] => [Microsoft][ODBC Driver 17 for SQL Server]Cannot generate SSPI context [message] => [Microsoft][ODBC Driver 17 for SQL Server]Cannot generate SSPI context ) )
我知道附加 _XX 的缓存代表 UID,所以我认为这可能是我已经尝试过不同用户请求票证之类的问题,但我无法让它工作。
我还尝试使用 unixODBC 并定义一个 DSN。它在使用 isql 进行测试并在 php 交互模式下使用 odbc_connect 时工作(也与使用 pyodbc 的 python 一起),但不是来自 php 页面。
有人知道我缺少什么吗?这可能很明显,但我对这个主题相当陌生,并且没有太多关于从 linux 机器访问基于 Windows 的 MS SQL 服务器而无需额外 SQL 用户的信息。提前感谢您的帮助!
【问题讨论】:
标签: php sql-server windows-authentication sqlsrv msodbcsql17