php:在屏幕输出之前运行的shellscript

时间:2016-02-22 12:42:37

标签: php bash

我目前正在组建一个基于Web的小型GUI来生成kickstart脚本。我有一个确认页面,它通过POST将相关数据发送到PHP页面,在那里调用实际的shell脚本来构建iso。到目前为止,它的工作正常,但页面似乎在输出任何其他内容之前执行脚本(例如,我在页面开头插入的回声......),以及我完全无能为力。有人愿意开导我吗?

这是PHP页面执行shell脚本的代码...

echo 'Generating your ISO; this might take a while...';
sleep(20);

if (!isset($_POST['auth'])) {
        $ad = 'N';
        }
else {
        $ad = 'Y';
}

if (!isset($_POST['oracle'])) {
        $oracle = 'N';
        }
else {
        $oracle = 'Y';
        }

if ((!isset($_POST['ip'])) or (!isset($_POST['hostname'])) or (!isset($_POST['rhsel'])) or (!isset($_POST['submit'])) or (!isset($_POST['gw'])) or (!isset($_POST['nm']))) {
        die('Please use the correct form !');
}

if (isset($_POST['ip'])) {
        $ip = trim($_POST['ip']);
        }

if (isset($_POST['gw'])) {
        $gw = trim($_POST['gw']);
        }

if (isset($_POST['nm'])) {
        $nm = trim($_POST['nm']);
        }

if (isset($_POST['hostname'])) {
        $hostname = trim($_POST['hostname']);
        }

if (isset($_POST['rhsel'])) {
        $rhsel = $_POST['rhsel'];
        }
passthru("/usr/bin/sudo /data/skripte/webconfig.sh $rhsel $oracle $ad $ip $gw $nm $hostname 2>&1");

1 个答案:

答案 0 :(得分:0)

通过浏览器访问的PHP脚本是请求 - 响应,这意味着所有处理都在标题和内容发送到客户端之前在服务器上完成。这意味着您不会像在命令行中看到的那样获得持续更新的输出。没有办法解决这个问题。抱歉。