我正在 IIS8 上创建一个 PHP 网站,该网站需要连接到与 IIS8 位于同一 Windows 域中的 SQL Server。我获得了一个 Windows 域用户帐户,并被要求使用其凭据进行连接。
我正在使用sqlserv_connect()
PHP,但出现错误Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
有没有办法以 windows 域用户身份运行 PHP + IIS8?或者我必须将 SQL Server 配置为使用 SQL 身份验证模式以便我可以提供用户名和密码吗?
虽然乔尔的回答让我想到了它,但我并没有用上面的方法解决问题。我发现将应用程序池更改为特定用户没有帮助。还有一些相关的区域需要检查。
php.ini中的FastCGI.Impersonation值必须设置为1,这个可以在任务管理器中验证,查看PHP进程当前运行在什么账户下。
然后在网站对象下的 IIS 管理器中有一个 IIS 身份验证设置。默认情况下,匿名登录是启用的,当您查看设置时它使用默认用户帐户(在我的例子中是 IISUSER)。它允许将匿名用户更改为应用程序池的选项,在这种情况下,如果将应用程序池设置为正确的用户,它将起作用。
或者,完全忘记应用程序池,直接将用户帐户设置为默认的匿名登录帐户。
我在这里留下我的答案,看看其他人是否可以反馈这种更改默认匿名用户的方法的潜在陷阱。
您可以使用 IIS 管理器将您的 PHP 站点
Identity
的Advanced Settings
区域设置为Application Pool
您想要的任何用户...但就个人而言,我更喜欢使用 sql 身份验证。我以前用 IIS 7.5 和一个登录权限为零的域级服务帐户做过这件事。如果您知道如何在政策方面敲定服务帐户,那么这就是解决问题的方法。