Windows Server 2016 IIS 上的 PHP 8.2 具有专用应用程序池用户引发 500 错误

PHP 8.2 on Windows Server 2016 IIS with a dedicated application pool user throws 500 error

提问人:Mario 提问时间:11/16/2023 更新时间:11/16/2023 访问量:26

问:

我们使用 IIS 在 Windows Server 2016 上设置 PHP 安装。 应用程序池用户是专用的,授予对应用程序文件夹的文件权限。匿名身份验证已禁用,Windows 身份验证已启用。
通过设置,我在访问网站时收到服务器错误 500。

我按照这里的说明进行操作:https://learn.microsoft.com/en-us/iis/application-frameworks/scenario-build-a-php-website-on-iis/configuring-step-1-install-iis-and-php

如果我更改为使用“应用程序池标识”的匿名身份验证,它可以正常工作。 但是我们需要 Windows 身份验证才能通过窗口登录对客户端进行身份验证,并通过 LDAP 获取其组成员身份的 AD 信息。

知道缺少什么吗?现在试图找到一整天的解决方案。

PHP IIS ApplicationPoolIdentity

评论

0赞 Jalpa Panchal 11/16/2023
您能否分享详细的错误消息?使用服务器变量 LOGON_USER 和 AUTH_TYPE 检查经过身份验证的用户并查看它显示的用户。启用详细错误消息。检查事件查看器日志。
0赞 Mario 11/16/2023
使用上述设置,我从 IIS 获得 500 Server Error Standard 页面。事件查看器中没有日志。返回到 NETWORKSERVICE 而不是专用应用程序池用户时,我看到正确的登录用户(通过 LOGON_USER、AUTH_USER、REMOTE_USER)
0赞 Mario 11/16/2023
这显然是一个权限问题。为了进行测试,我在服务器上拥有服务帐户(用于应用程序池用户)管理员权限,现在它运行良好。有谁知道可能缺少哪些权限?目前,应用程序池用户对应用程序文件夹具有完全权限,但这似乎还不够:(
0赞 Jalpa Panchal 11/16/2023
您可以尝试使用进程监视器工具来解决权限问题
0赞 Lex Li 11/16/2023
您安装了 PHP Web 应用程序,而不仅仅是框架,因此在大多数情况下,PHP Web 应用程序会确定响应代码 200 或 500。要了解为什么 Windows 身份验证会导致 500 错误代码,您需要调试 PHP 代码,而像这里这样的地方并没有多大帮助(我们无法访问您的代码或服务器本身)。

答: 暂无答案