我試圖使用PHP來運行一個批處理文件:php爲什麼我不能運行批處理文件?
$script = "\\\MAFINFWWWPV02\D$\WebContent\\engsys.corp.ftr.com\BatchFiles\CopyFiles.bat";
exec($script,$ReturnArray,$ReturnValue);
//shell_exec($script);
//system('cmd /c $script');
//system($script,$ReturnValue);
沒有這些工作!我試過
var_dump($ReturnValue); echo "<br>";
var_dump($ReturnArray); echo "<br>";
試試,看看是怎麼回事,但我得到什麼似乎是這樣的正常輸出:
INT(1)
陣列(0) {}
但是,我試圖用我的bat文件複製的文件,在手動運行時工作正常,不會被複制!
編輯額外的問題
執行\
需要在文件地址進行轉義?
EDIT 2
這是我從運行icacls
得到:
CopyFiles.bat NT AUTHORITY \ IUSR:(I)(RX)
NT AUTHORITY\SYSTEM:(I)(F) NT AUTHORITY\NETWORK:(I)(RX) CORP\ibb601:(I)(F) CORP\taw330:(I)(F) CORP\mmm976:(I)(F) BUILTIN\Administrators:(I)(F) BUILTIN\Users:(I)(RX,W)
我有完全的控制權,其他人至少有讀/執行權。
編輯3
我已經把範圍縮小。這不是說這些命令不起作用,而是許可被拒絕。我不明白,因爲每個人都有寫入和讀取/執行整個文件夾的權限。
EDIT 4
我從上面的努力得到它的工作運行的命令。我正在使用功能(var_export(my_exec("shell_exec($script)"));
)將錯誤信息打印到我的屏幕上。我總是這樣的:
'\'shell_exec \'不被識別爲內部或外部命令,可操作程序或批處理文件。
我得到一個不同的每個shell_exec
,system
和exec
。它只是一直說這個命令不被識別。這是在Windows Server 2012 R2 Standard 64位上執行的。有什麼我做錯了命令?
功能,我使用打印錯誤(我發現它在另一篇文章):
function my_exec($cmd, $input='')
{
$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
fwrite($pipes[0], $input);fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);
$rtn=proc_close($proc);
return array('stdout'=>$stdout,'stderr'=>$stderr,'return'=>$rtn);
}
運行Web服務可能沒有權限訪問該服務器,位置或BAT文件和/或沒有按用戶沒有權限訪問文件或複製目的地。 – AbraCadaver
@AbraCadaver我已確保用戶確實可以讀取/寫入這兩個文件位置以及.bat文件的位置。 – Mike
@AbraCadaver有沒有一種方法可以確切地查看哪個用戶正在使用?或者強迫它使用某個用戶? – Mike