我正在尝试编写一个 PHP脚本,它允许我从预定位置选择要下载的几个文件。我希望我的脚本将数组传递给前面编写的 Powershell脚本,并让我的 Powershell脚本处理下载(基本上php文件只需要告诉 powershell 文件需要下载的内容)。
我看了几个选项,似乎exec
是我应该使用的命令(因为我不关心命令行输出我不需要shell_exec
)。
到目前为止,我已经转为OFF
安全模式,允许我使用此命令。我还应该注意, php 文件将从服务器运行,但 powershell 文件位于本地计算机上。
到目前为止,处理param传递的代码片段如下所示:
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
内的内容感到有些困惑。当我运行上面的代码时,没有错误,但没有任何反应。我对此有点新意,所以如果需要更多信息我会道歉。感谢您的任何帮助。
答案 0 :(得分:2)
尝试:
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');
答案 1 :(得分:0)
如果你想传递变量的内容,我应该使用双引号实际展开它,我想。此外,您应该引用脚本名称,因为路径包含空格:
exec("powershell.exe \"C:\Wordpress Setup\setupThemes.ps1\" $chooseTheme");