PHP IIS和SQLSRV |用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。

问题描述 投票:0回答:1

我知道我曾经问过的某些版本,但没有什么需要我帮助的地方。

我安装了Server 2016 IIS Box,使用Web Platform Installer 5.0部署了该版本(均为x64)的PHP 7.4和Microsoft SQL Server驱动程序。然后,我将IIS中的应用程序池的标识更改为域服务帐户domain \ svc-php

但是,当尝试连接到远程SQL Server时,出现以下错误:

用户“ NT AUTHORITY \ ANONYMOUS LOGON”的登录失败

现在,我知道如何在SQL中分配访问权限,我的主要问题是我希望PHP使用App Pool的身份,因此我可以在App Server和SQL Server之间使用Windows Auth,而不必使用SQL Auth。在“用户到应用程序”端,我希望在服务器本身上进行Windows身份验证,因此我知道谁正在登录,并且可以在IIS上启用Windows身份验证的情况下正常运行,我可以得到

$ _ SERVER ['AUTH_USER'] =域\用户名

我唯一想到的是假冒,应该以一种或另一种方式设置。我尝试将设置都设置为0以及不包括在内,并在PHPInfo()中更改了设置,但始终设置为1,尽管我认为这并不重要。

fastcgi.impersonate = 0

因此,简而言之,我只想强制PHP使用App Pool作为用于查询SQL的标识。有人知道我在做什么错吗?

php iis sqlsrv
1个回答
0
投票

我知道了,确实需要将其设置为:

fastcgi.impersonate = 0

之所以不起作用,是因为它在php.ini中第二次被引用较低,所以我对较高版本的编辑被覆盖了。

要清楚地帮助别人。...

  • IIS for Users上的Windows Auth可以正常工作,并且与PHP到SQL无关
  • 使用fastcgi.impersonate = 0似乎确实使SQLSrv驱动程序使用我想要的应用程序池ID
© www.soinside.com 2019 - 2024. All rights reserved.