我使用PHP 5.4在Windows Server 2008 R2上运行IIS 7。我的一个PHP脚本尝试使用UNC路径访问受保护网络共享上的文件。如何将IIS服务帐户更改为有权访问共享的帐户?这在Apache HTTP服务器上很容易做到(你只需更改它),但目前还不清楚如何处理IIS。我该怎么办?
更新
我能够使用我网站“基本设置”中的“连接为”选项让工作正常,然后指定可以访问网络共享的帐户。它出现 我的问题与这个问题有关:
答案 0 :(得分:35)
对于在Windows Server 2008 R2上运行的IIS 7 ...在IIS Manager
中,选择运行您的网站的Application Pool
。
单击“高级设置”。 Identity
会有一个条目(位于Process Model
部分下方)。单击它,为您有权访问共享的帐户提供凭据。
<强>更新强>
如果您使用的是Active Directory域帐户,则应确保在Identity
下正确地为正在运行的应用程序池提供了该帐户。例如,MYDOMAIN\myAccount
。
进行此更改后,您需要执行以下操作:
更新II
通过对此答案的评论讨论,@ HydroPowerDeveloper能够使PHPS脚本能够使用WebSite通过UNC路径访问网络共享 - &gt;基本设置 - &gt; “连接为”并在其中设置凭据。
过去,我一直使用通过Identity
设置Application Pool
的方法,这使我的代码可以通过UNC路径访问网络共享。
但是,我在IIS
上部署的所有站点/应用程序都是基于.NET的WCF或ASPX站点。
我会推测(但我不是100%肯定这个,需要研究/测试来确认)Identity
中指定的Application Pool
是通过执行.NET代码来使用的,而“ “连接为”由PHP脚本使用。
答案 1 :(得分:6)
通常,应用程序池使用尽可能少的权限进行设置。
http://msdn.microsoft.com/en-us/library/ff647402.aspx
最简单的方法是允许访问当前的IIS帐户。
在资源管理器中,导航到共享目录。
右键单击 - &gt;属性 - &gt;安全
如果在列表中没有看到预期的IIS用户(组或用户名),请根据需要编辑和添加用户。
我使用“网络服务” - &gt;检查姓名。
详细说明在该网站上。
通过这种方式,系统仍受限制,我们只允许访问特定目录,我们不需要创建任何新用户,我们不需要回收应用程序池,我们不需要执行任何漂亮的模拟代码。
答案 2 :(得分:1)
复活旧问题......
我刚刚设置了一台使用Perl访问UNC共享的Win 2016服务器。我将应用程序池设置为我验证的对该共享具有正确权限的帐户。然后我将我的网站设置为&#39; Connect as ...&#39; (在&#39;基本设置下&#39;)同一个用户。我仍然无法访问工作。
后来很多人头疼,我意识到我的虚拟目录&#39; cgi-bin是在最初的&#39;通过&#39;帐户。然后我将虚拟目录设置为&#39; Connect as ...&#39;与网站和应用程序池相同的帐户,宾果游戏,一切正常。
因此,请记住更新任何虚拟目录以及站点和应用程序池......