【问题标题】:PHP Shell_exec Live Output in a box一个盒子里的 PHP Shell_exec 实时输出
【发布时间】:2020-08-23 05:45:33
【问题描述】:

我正在尝试运行 shell.sh $folderPath $khz $group2 并在页面上的框中显示实时输出。

但是,当我点击提交时,我没有得到任何输出。

如何从我的 php 脚本获得实时输出?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AppTek</title>
    <link rel="stylesheet" href="./css/style.css">
    <link rel="stylesheet" href="./css/splitter.css">
</head>
<body>
    <form method="GET" action="splitter.php">
        <label for="folderPath">Folder Path:</label>
        <input type="text" id="folderPath" name="folderPath">
    <br></br>
        <fieldset id="khz">
            <p>Please Choose Khz: </p>
          <input type="radio" value="8khz" name="khz"> 8khz <br>
          <input type="radio" value="16khz" name="khz"> 16khz <br>
        </fieldset>
    <br></br>
        <fieldset id="audio-type">
            <p>Please Choose Type: </p>
          <input type="radio" value="C12" name="group2"> Channel 1 & 2 <br>
          <input type="radio" value="LR" name="group2"> Left to Right <br>
        </fieldset>
        <div class="spaceh10"></div>
        <input class = "submitButton" type="submit" value="Submit">

    <div class="spaceh10"></div>
    <div style="width:500px;height:100px;border:1px solid #000;">
    <?php
        if (isset($_GET['folderPath']) && !empty($_GET['folderPath']) && is_dir($_GET['folderPath']) && 
        isset($_GET['khz']) && isset($_GET['group2'])) {

        $folderPath = $_GET['folderPath'];
        $khz = $_GET['khz'];
        $group2 = $_GET['group2'];

        $run = shell_exec("shell.sh $folderPath $khz $group2");
        while (@ ob_end_flush()); 

        $proc = popen($run, 'r');
        echo '<pre>';
        while (!feof($proc))
        {
            echo fread($proc, 4096);
            @ flush();
        }
        echo '</pre>';
    }
    ?>
    </div>
</body>
</html>

和 shell.sh 会是这样的

#!/bin/bash
echo "path: $1 arg1: $2 arg2: $3"

【问题讨论】:

    标签: php html bash shell


    【解决方案1】:

    也许是这个?

        $run = shell_exec("shell.sh {$folderPath} {$khz} {$group2}");
    

    看起来您没有正确传递这些变量。如果这不起作用,也许单独做字符串。

        $command = 'shell.sh {$folderPath} {$khz} {$group2}';
        $run = shell_exec($command);
    

    【讨论】:

    • 感谢您的评论!这也不起作用。我将更新我的帖子,向您展示一个示例 .sh 文件
    • 另外的问题是,即使我做简单的回声,它也不显示任何东西
    • 你可以从命令行运行它吗?我会从那里开始。在从 PHP 中尝试之前,确保 shell.sh 文件确实可以在命令行中运行并接受参数。
    • 它只是没有在网页上显示任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多