如何使用PHP 内置服务器Windows 身份验证(NTLM) 来填充$_SERVER["LOGON_USER"]?

How to use the PHP built-in server with Windows Authentication (NTLM) to fill $_SERVER["LOGON_USER"]?

我有使用 $_SERVER["LOGON_USER"] 的脚本,它是通过 IIS 身份验证设置在我的服务器上获得的。我希望这个相同的变量在本地 运行 时包含我的 domain\username,或者至少在我启动本地主机上的 PHP 内置服务器时有办法设置它。

如何在我的机器上配置 PHP 以获取和填充此变量,就像通过 IIS 运行 时一样?

PS:我看到了this question,但是答案地址是$_ENV,不是$_SERVER

这是一个解决方法,如果有人有 better/proper 解决方案(即启用 NTLM),请 post 作为答案,我会接受它。

我能够使用路由器脚本填充该变量。根据 docs,这个脚本在每个 HTTP 请求的开始 运行,所以我在本地 运行ning 时用它来设置这个变量。

同样在我的例子中,我的环境设置了这两个变量,USERDOMAINUSERNAME,所以我用它们来形成 LOGON_USER 服务器变量。

routerCredentials.php

<?php
$_SERVER["LOGON_USER"] = getenv("USERDOMAIN") . "\" . getenv("USERNAME");
return false; // serve the requested resource as-is.

要使用它,您只需在启动 PHP 内置服务器时指向该文件即可:

php -S localhost:8000 "c:\somepath\routerCredentials.php"