我有一个脚本,给定一个ID,启动一些复杂的进程并将RTF文件放到stdout
。例如,您可以使用foo.exe 27
之类的名称将其命名为ID 27。
现在我想写一个简短的PHP页面:
id
参数shell_exec(...)
(我们假设它在$PATH
上)这可以轻松完成吗?
答案 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));
希望它有所帮助!