短PHP页面执行命令并传递ID?

时间:2010-01-26 22:26:49

标签: php scripting

我有一个脚本,给定一个ID,启动一些复杂的进程并将RTF文件放到stdout。例如,您可以使用foo.exe 27之类的名称将其命名为ID 27。

现在我想写一个简短的PHP页面:

  • 接受GET id参数
  • 检查参数是否为整数
  • 在脚本上调用shell_exec(...)(我们假设它在$PATH上)
  • 响应脚本的输出,弹出通常的浏览器特定的下载提示,就好像他们点击链接中的文件一样

这可以轻松完成吗?

2 个答案:

答案 0 :(得分:0)

请确保您留下(或设置)足够的时间让脚本运行 - 这可能需要很长时间才会导致您的请求超时。

另外,请确保清理放入exec()的输入。

但是,这一切都可以完成。

答案 1 :(得分:0)

这应该很简单。您需要的是确保您没有向脚本插入奇怪的数据,以避免任何中断,并将STDERR重定向到STDOUT以避免出错并且无法看到它们。

<?php

// configuration
$scriptName = 'foo.exe';

// sets the header to send raw data to the browser
header('Content-Type: text/plain');    

// disables the timeout for your script
set_time_limit(0);

// if the input is not an integer
if (! is_integer($_GET['id']))
{
        // throw to forbidden page
        header("HTTP/1.0 403 Forbidden");
        die();
}

// parameter to use as parameter of 
// the command to call
$parameterId = (int) $_GET['id'];

// preparing the command and redirecting STDERR to STDOUT (the browser)
$command = "$scriptName $parameterId 2>&1";

// executing command and outputing it
print(shell_exec($command));

希望它有所帮助!