如何configurationIIS以允许访问PHP脚本的networking资源?

我目前正在开发一个PHP前端,将一系列在不同服务器上运行的应用程序连接起来。 许多这些应用程序生成我需要访问的文件,但这些文件(由于各种原因)驻留在其父服务器上。

如果我从命令行发出一些脚本,例如:

<?php var_dump(glob("\\\\machine-name\\some\\share\\*")); 

我将获得该目录的完整内容,certificate使用PHP读取UNC共享的内容时,程序没有问题。 但是,如果我尝试从Web服务器执行相同的脚本,则会得到一个空数组 – 更具体地说,如果我使用了更多显式function来devise“打开”像文件这样的目录,则会出现访问错误。

我相信这是一个权限问题,但我不是一个服务器/networkingpipe理员types,所以我不知道我需要做些什么来纠正这个问题,让我的脚本运行,我检出的链接没有可能是由于我的背景,或者就IIS而言缺乏帮助,加上我们实际上并没有使用.NET。

相关统计信息:Windows Server 2008 Standard SP2 IIS 7.0 PHP 5.2.9

我将连接到两种types的服务器:一些其他几乎完全相同的Server 2008计算机,以及一台运行embedded式XP的计算机。

链接没有特别有用,但也许我只是误读:

  • http://support.microsoft.com/?id=306158
  • http://support.microsoft.com/kb/207671/EN-US/
  • http://support.microsoft.com/kb/280383/

正如你猜测这是一个权限问题… IIS工作进程运行的用户是机器上的本地帐户(很可能是IUSER_ <MACHINENAME> ),并且该用户没有进行身份validation(甚至acocunt甚至存在!)在您试图通过UNC浏览的其他机器上

就像一个testing,你可以进入IISpipe理器,并改变IIS服务正在运行的网站…我使用Server 2003 / IIS 6的术语,虽然因为我没有一个Server 2008框右手现在。 如果你在IIS 7pipe理器中徘徊,你应该能够find你可以在哪里设置工作进程所运行的用户。

您的PHP应用程序使用服务帐户运行,并且这是用于凭据用于访问networking资源的用户帐户。 IIS的默认设置是使用Web服务器的本地帐户,并且该帐户没有权限访问networking资源(因为它是本地帐户)。

您应该为您的网站configurationIIS应用程序池以使用域用户帐户运行,然后为该用户帐户授予networking共享上适当的权限。

如果您没有Active Directory域,或者这两个服务器不是它的成员,事情会变得更棘手,但是可以通过在两台服务器上创build两个具有相同用户名和密码的用户帐户来完成。

如果您使用的是“Windows Server 2008 Standard SP2 IIS 7.0”,那么您为什么要阅读前一年的Windows-es / IIS-es文章?
这些文章“APLLIES TO:”部分描述的内容,如IIS3.0-5.0(主要是IIS 4.0),传统ASP(1999年不推荐使用),不推荐使用的FrontPage扩展,ASP.NET.0-1.1(C#.NET) /VB.NET 2002)以及工作组中工作站的上下文!

你有AD / DC吗?

PLZ阅读我的答案模拟不工作 – networking共享