【发布时间】:2021-11-12 12:04:00
【问题描述】:
我已经设置了一个带有 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 服务器复制了设置。我的设置截图:
Anonymous Authentication using App pool identity in IIS
App pool identity added on database in SQL Server
我是否遗漏了某处的设置,或者 Server 2019 处理应用程序池标识的方式与 Server 2012 不同?我已经尝试按照这个优秀的 SO 页面上的说明进行操作:
IIS AppPool to SQL Server permissions (adding NT AUTHORITY\IUSR)
但是就像服务器不在乎我告诉它使用应用程序池一样。
更新编辑:谜团已解决
抱歉,这是一个极端用户错误的案例。我将“test”目录放在 wwwroot 下,ala c:\inetpub\wwwroot\test。我以www.domain.com/test 的身份访问它,而我需要做的是将它设置为以test.domain.com 运行。它在 wwwroot 应用程序池(在本例中使用 IUSR)下运行,因为这就是我访问它的方式。感谢所有帮助我解决此问题的人!
【问题讨论】:
-
您确定您的应用在正确的 AppPool 中运行吗?
-
据我所知,IIS 表示它在“测试”AppPool 中:i.imgur.com/TadMdAH.png
-
PHP 甚至托管在 App Pool 进程中吗?还是使用 CGI?
-
我正在使用 CGI,但 PHP 似乎已正确安装并运行。我可以让 phpinfo() 运行 - i.imgur.com/VRbuEmW.png
-
CGI“模拟用户”设置是什么?
标签: sql sql-server iis application-pool applicationpoolidentity