2012-07-23 117 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");