【发布时间】:2015-06-10 14:36:38
【问题描述】:
我在 MS Server 2012 R2 上运行 XAMPP。我需要连接到只接受集成 win 身份验证的 MSSQL 服务器。
如果我只是尝试以下操作,我会在 SQL Server 上收到登录失败和错误日志,表明 SQL 身份验证不是一个选项。它只接受来自某个用户的连接。显然 PHP 脚本没有在该帐户下运行。
$server = "sqlServerName";
$SQLUser = "username";
$SQLPass = "pw";
$SQLDatabase = "db";
$link = mssql_connect($server,$SQLUser,$SQLPass);
因为我使用的是 PHP 5.3.1 sqlsrv_connect 不是一个选项。我试图为它加载 php 驱动程序,但它只是不工作。我无法更改 sql server 的身份验证,也无法使用任何其他版本的 PHP。
我也无法打开secure_connection,因为我必须能够连接到其他需要“正常”sql 身份验证的sql 服务器:
mssql.secure_connection = Off
如何连接到我有问题的 sql server?
更新:将xampp 升级到最新版本。 PHP 现在是版本 5.6.8 我仍然无法使用 sqlsrv_connect(),即使我安装了必要的驱动程序并将每个 dll 添加到 php.ini。多次重启apache。有什么线索吗?
错误消息:致命错误:调用未定义函数 sqlsrv_connect()
【问题讨论】:
-
Mssql 专为 linux 发行版而设计。不知道你是如何将它安装在 Windows 机器上的(发布我希望看到的构建的链接),但我不希望它能够工作。如果需要,升级到 php 5.4 会更安全。无论如何,5.3.1 已经过时且不安全。
-
更新问题,请查收
-
不确定我是否理解正确。您是说,您的 SQL Server 配置为仅接受集成的 Windows 身份验证。因此,要么在有权连接到 SQL Server 的 Windows 用户下运行你的 php 脚本,要么在集成 Windows 身份验证之外启用 SQL Server 身份验证,正如@danielson317 在他的回答的第一点中所述。
-
@VladimirBaranov 启用 sql server 身份验证不是一个选项。那么如何代表用户运行 php 脚本呢?此外,如何以这种方式使用 mssql_connect(),我的意思是不提供用户/密码。因为就像我说的我不能让 sqlsrv_connect 工作。
-
@fishmong3r,在这些 docs 中,第一条评论说要在 php.ini 文件中设置
mssql.secure_connection = On以启用 Windows 身份验证。但是你说你做不到。在这种情况下我不知道该怎么办。
标签: php sql-server-2008 windows-authentication