2013-08-23 81 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 –