2012-07-23 128 views
0

我正在嘗試編寫一個PHP腳本,這將允許我從預定位置選擇一些文件進行下載。我想我的腳本到一個數組傳遞給PowerShell腳本該ID前面的書面和有我PowerShell腳本處理下載(基本上是PHP文件只需要告訴PowerShell的文件需要下載什麼的) 。 我看了幾個選項,看起來exec是我應該使用的命令(因爲我不在乎命令行輸出我不應該需要shell_exec)。將參數從PHP傳遞到Powershell exec

到目前爲止,我已將OFF安全模式允許我使用此命令。我還應該注意到,php文件將從服務器運行,但是powershell文件位於本地計算機上。

的代碼片段到目前爲止處理帕拉姆經過是這樣的:

if(isset($_POST['formSubmit'])) 
{ 
    $choosePlugin = $_POST['wpPlugin']; 
    $chooseTheme = $_POST['wpTheme']; 

    if(isset($_POST['wpTheme'])) 
    { 
     echo("<p>You selected: $chooseTheme</p>\n"); 
     exec('powershell.exe C:\Wordpress Setup\setupThemes.ps1 $chooseTheme'); 

    } 
    else 
    { 
     echo("<p>You did not select a theme</p>\n"); 
    } 

我有點困惑,我應該把exec內。當我運行上面的代碼時,沒有錯誤,但沒有任何反應。我對此有點新,所以如果需要更多信息,我很抱歉。任何幫助表示感謝你。

回答

1

儘量做到:

echo exec('powershell.exe C:\\Wordpress Setup\\setupThemes.ps1 $chooseTheme'); 

看到powershell.exe的結果(記得雙\),也把絕對路徑的exe文件:

echo exec('c:\\PATH_TO_POWERSHELL.EXE\\spowershell.exe C:\\Wordpress Setup\\setupThemes.ps1 $chooseTheme'); 
+0

香港專業教育學院改變了我的代碼: 回聲EXEC('C:\\的Windows \\ System32下\\ \\ WindowsPowerShell 1.0 \\的PowerShell。 exe「C:\\ Wordpress Setup \\ setupThemes.ps1」$ chooseTheme 2> &1'); 而我收到錯誤:sh:C:WindowsSystem32WindowsPowerShellv1.0powershell.exe:找不到命令 通過命令未找到我假設這意味着服務器是試圖運行腳本,但沒有訪問我的本地機器?對不起再次不確定這個解決方案。 – Jingles177 2012-07-23 19:04:04

+0

檢查如果Apache(或IIS)用戶在Windows文件夾中具有讀權限 – 2012-07-24 06:54:30

+0

是的,它似乎是權限問題,在php中看到這個評論.net頁面:http://www.php.net/manual/es/function.exec.php#101837(關於windows和exec) – 2012-07-24 06:57:38

0

如果你想要傳遞變量的內容,你應該使用雙引號來實際擴展它,我想。此外,由於路徑中包含空格,你要引用腳本名:

exec("powershell.exe \"C:\Wordpress Setup\setupThemes.ps1\" $chooseTheme");