在PHP中实现对Windows域共享驱动器上文件的访问
<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>