我已经设置了一个带有 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 服务器复制了设置。我的设置截图:
我是否在某处遗漏了某个设置,或者 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)下运行,因为这就是我访问它的方式。感谢所有帮助我解决此问题的人!