在PHP中实现对Windows域共享驱动器上文件的访问
P粉323224129
P粉323224129 2023-08-30 23:11:13
0
1
533
<p>我有一堆文档存储在一个独立的机器上,我需要从一个PHP/IIS服务器上提供。问题是文档驱动器连接到一个Active Directory域的机器上,而Web服务器没有连接,所以我不确定在哪里提供PHP需要验证的AD用户来访问驱动器。</p> <p>我有一个调用PHP的IIS应用程序池,以我创建的一个新的Windows用户运行(设置为应用程序池的“Identity”,以及网站的匿名身份验证用户)。我以这个新用户的身份登录到服务器,并设置了一个映射网络驱动器,但经过一些研究后,我认为这是一个死胡同;我读到服务不会以加载映射驱动器的方式登录到Windows。</p> <p>仅通过IP地址引用更接近工作,但我遇到了身份验证错误。我在网上找到的主要解决方案是将应用程序池运行为具有访问驱动器权限的用户,但我不知道是否可能,因为服务器不在那个Windows域中。(但我也不是AD专家)</p> <pre class="brush:php;toolbar:false;">echo shell_exec('whoami'); //输出我创建的Windows用户的名称 echo scandir('\\\\192.168.1.120\\data$'); //找不到用户名/密码 echo trim(shell_exec('dir \\\\192.168.1.120\\data$ 2>&1')); //用户名或密码不正确 echo scandir('Z:\\'); //找不到路径的PHP警告 echo trim(shell_exec('dir Z: 2>&1')); //找不到路径</pre> <p>如果没有简单的、非hack的解决方案,我可以看看客户是否可以将Web服务器放在AD域中,但我不知道这是否会对服务器运行的其他服务产生意想不到的副作用。</p>
P粉323224129
P粉323224129

全部回复(1)
P粉765570115

如果这些是公开的,并且不需要用户对目录进行身份验证,则不要将它们放在域中。然而,如果您需要某种身份验证或从AD中查找信息,您可以考虑在DMZ中运行Active Directory应用程序模式(ADAM)。您可能需要将相关信息从AD复制到应用程序分区,因为ADAM不会同步标准AD分区。

当然,如果Web服务器与域控制器位于同一网络上,可以将其添加到域中以增加可管理性。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板