1

我正在尝试编写一个PHP 脚本,它允许我选择一些文件从预定位置下载。我希望我的脚本将一个数组传递给一个之前编写的Powershell 脚本,并让我的Powershell 脚本处理下载(基本上,php 文件只需要告诉powershell文件需要下载什么)。我查看了一些选项,似乎这exec是我应该使用的命令(因为我不关心我不应该需要的命令行输出shell_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。当我运行上面的代码时,没有错误但是没有任何反应。我对此有点陌生,所以如果需要更多信息,我深表歉意。感谢您提供任何帮助。

4

2 回答 2

2

试着做:

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

要查看 powershell.exe 的结果(记住双 \),还要确保将绝对路径放入 exe 文件:

 echo exec('c:\\PATH_TO_POWERSHELL.EXE\\powershell.exe C:\\Wordpress Setup\\setupThemes.ps1 $chooseTheme');
于 2012-07-23T18:17:51.160 回答
0

如果你想传递变量的内容,你应该使用双引号来实际扩展它,我猜。此外,您应该引用脚本名称,因为路径包含空格:

exec("powershell.exe \"C:\Wordpress Setup\setupThemes.ps1\" $chooseTheme");
于 2012-07-23T18:22:41.223 回答