2013-08-23 77 views
0

在PHP中,当使用unc路径时,我无法通过shell_exec,system或exec执行命令。 下面是一个例子:使用UNC路径的PHP shell_exec

什么工作:

$command = shell_exec("dir c:\\"); echo $command; 

这里是行不通的。它没有回音。

$command = shell_exec("dir \\\\server\\dir"); echo $command; 

当我在Windows命令行窗口或PowerShell中运行DIR \\服务器\目录它执行罚款。

+1

运行Web服务器(例如Apache)的用户帐户是否与登录的服务器相同?另外,您可能想尝试'net use'将驱动器号分配给远程目录。 – dnet

+0

即使您正在编写Windows,也不要在路径中使用反斜杠。 PHP将自动转换为适当的分隔符,只需使用正常的正斜杠即可。改为尝试'dir // server/dir'。 –

回答

1

UNC路径将起作用,但PHP服务正在运行的用户必须有权访问该共享。

我会假设你正在使用IIS运行PHP。如果是这种情况,则默认用户是IUSR_MachineName。确保此用户有权访问共享。

如果您正在运行Apache,请检查服务器上的任务管理器以确定哪个用户正在运行Apache服务。给这个用户名访问共享。

+0

PHP正在IIS上运行,我如何将用户从IUSR_ 更改为另一个帐户? – user2475310

+0

也许这个服务器故障的问题将帮助你:http://serverfault.com/questions/83947/iis7-running-a-site-under-a-limited-user-account –