我正在IIS8上创build一个PHP网站,需要连接到与IIS8处于相同Windows域的SQL Server。 我得到一个Windows域用户帐户,并要求使用其凭据连接。
我正在使用sqlserv_connect()为PHP,我得到错误Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
有没有办法运行PHP + IIS8作为Windows域用户? 或者我必须configurationSQL Server使用SQL身份validation模式,以便我可以提供用户名和密码?
虽然乔尔的答案引导我,但我没有解决上述问题。 我发现将应用程序池更改为特定的用户没有帮助。 还有几个相关领域要检查。
必须将php.ini中的FastCGI.Impersonation值设置为1.这可以在任务pipe理器中validation,并查看PHP进程当前正在运行的帐户。
然后在网站对象下的IISpipe理器中有一个IIS身份validation设置。 默认情况下,匿名login被启用,当你看设置它使用默认的用户帐户(在我的情况下,它是IISUSER)。 它允许选项将匿名用户更改为应用程序池,在这种情况下,如果将应用程序池设置为正确的用户,它将工作。
或者,完全忘记应用程序池,直接将用户帐户设置为默认的匿名login帐户。
我在这里留下我的答案,看看是否有其他人可以反馈这种改变默认匿名用户的方法潜在的陷阱。
您可以使用IISpipe理器来设置您的PHP网站的Application Pool的Advanced Settings区域的Identity是任何你想要的用户…但个人而言,我更喜欢使用SQL身份validation。
我之前使用IIS 7.5和一个域login权限为零的域级服务帐户完成了这项工作。 如果您知道如何敲定一个服务帐户,政策明智,那么这是它的方式。