【问题标题】:PHP can't write files in IIS using Edge and Windows AuthenticationPHP 无法使用 Edge 和 Windows 身份验证在 IIS 中写入文件
【发布时间】:2019-10-29 04:31:35
【问题描述】:

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

以下代码在 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 的建议,我将我的计算机名称添加到了 Intranet,但它并没有改变任何东西。这个名字就像 laptop-4.example.com 我添加了它,有没有 http 和 *.example.com 已经在受信任的站点中,将其保留或删除似乎没有任何改变。

【问题讨论】:

  • 出于测试目的,您能否尝试从 Internet 选项中将该特定站点添加到 Intranet 站点区域列表中,然后再次尝试进行相同的测试?让我们知道您的测试结果。如果需要,我们会尽力提供进一步的建议。
  • 感谢@Deepak-MSFT - 我试过了并更新了问题。似乎没有帮助:(
  • 请尝试将站点保留在内网站点区域列表中,并将其从受信任站点列表中删除并进行测试。
  • 我已从受信任的站点中删除了通配符,但那里没有该站点。同样的问题
  • 我想和你确认一下,你的内网设置是中低级吗?如果不尝试将其设置为中低级别。此外,如果可能的话,尝试发布设置快照可能会给我们更好的主意。

标签: php iis microsoft-edge windows-authentication


【解决方案1】:

似乎出于某种原因,Edge 似乎更喜欢列表中的 NTLM 优先于 Negotiate。不知道为什么,但它已经解决了这个问题。我可以可靠地恢复到协商以再次导致问题,所以它很可能是原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多