PHP 无法使用 Edge 和 Windows 身份验证在 IIS 中写入文件

PHP can't write files in IIS using Edge and Windows Authentication

我 运行 PHP 通过 windows 上的 IIS,并使用集成身份验证来使用域用户。

以下代码在 IE 11、Chrome 和 Firefox 中访问页面时有效。

$dir = dirname(__FILE__);
$dir = realpath($dir.'/../storage/logs');

$filename = $dir.DIRECTORY_SEPARATOR.'my-log.log';
file_put_contents($filename, 'hello world');

在 MS Edge 中访问时

PHP Warning: file_put_contents(C:\websites\my-site\api\storage\logs\my-log.log): 
failed to open stream: Permission denied in 
C:\websites\my-site\api\public\permissions.php on line 11 

(在基于Chromium的Edge-Dev中运行,只是传统/EdgeHTML版本有问题。)

如果我关闭 windows 身份验证,该代码也可以在 Edge 中使用。我知道我输入的密码是正确的,因为如果我输入的密码不正确,我会收到来自 IIS 的 401 未经授权的消息。

这个问题不仅仅是我的电脑;它在我们试过的所有 4 台笔记本电脑上都失败了。但似乎不影响服务器,只影响桌面 Windows.

更新

根据 Deepak-MSFT 的建议,我将我的计算机名称添加到内部网,但它没有改变任何内容。这个名字就像 laptop-4.example.com 我在有和没有 http 的情况下都添加了它,*.example.com 已经在受信任的站点中,保留它或删除它似乎没有任何改变。

似乎出于某种原因,Edge 似乎更喜欢在列表中的协商 之前使用 NTLM。不知道为什么,但它已经解决了问题。我可以可靠地恢复到 Negotiate 以再次引起问题,所以它很可能是原因。