0

我已经设置了一个带有 IIS、PHP 8 和 SQL 驱动程序以及 SQL Server 2019 Express 的 Windows Server 2019 机器。我创建了一个测试 PHP 应用程序和相应的应用程序池,然后设置了一个测试数据库。尝试使用 sqlsrv_connect 进行连接时,出现以下错误:

用户“NT AUTHORITY\IUSR”登录失败。

(SQL 错误中还有更多内容,但它只是原始错误数组输出,Stack Overflow 不喜欢它。)

现在,我相信我已正确配置一切以使用应用程序池标识而不是 NT AUTHORITY\IUSR。我从另一个较旧的(Server 2012)Web 服务器复制了设置。我的设置截图:

在 IIS 中使用应用程序池标识的匿名身份验证

在 SQL Server 中的数据库上添加了应用程序池标识

我是否在某处遗漏了某个设置,或者 Server 2019 处理应用程序池标识的方式与 Server 2012 不同?我已经尝试按照这个优秀的 SO 页面上的说明进行操作:

IIS AppPool 到 SQL Server 权限(添加 NT AUTHORITY\IUSR)

但这就像服务器不在乎我告诉它使用应用程序池一样。

更新编辑:谜团已解决

抱歉,这是一个极端用户错误的案例。我将“test”目录放在 wwwroot 下,ala c:\inetpub\wwwroot\test。我以www.domain.com/test的身份访问它,而我需要做的是将其设置为以 test.domain.com 的身份运行。它在 wwwroot 应用程序池(在本例中使用 IUSR)下运行,因为这就是我访问它的方式。感谢所有帮助我解决此问题的人!

4

1 回答 1

0

向所有人道歉;这是一个极端的用户错误案例。

我把test目录放在 下wwwroot,即c:\inetpub\wwwroot\test. 我正在访问它www.domain.com/test,当我需要做的是将它设置为运行时test.domain.com。它在wwwroot应用程序池(在这种情况下正在使用IUSR)下运行,因为这就是我访问它的方式。

感谢所有帮助我解决此问题的人!

于 2021-09-24T19:02:34.737 回答