5

我正在尝试在下面运行这个 javascript,但没有看到 php shell_exec 命令的输出。

运行 test -a bash 脚本会输出一系列 ID 的 34535、25643、23262 等。当我在我的 php 文件中简单地运行它时,它工作正常。

print shell_exec('/opt/bin/echkchunk -a');

但是当我尝试在下面运行它并选择 test1 时,屏幕上没有任何输出。浏览 chromes 开发人员工具时,我看到选择 test1 时的代码如下

<!--?php shell_exec("/opt/bin/echkchunk -a"); ?-->

好像它被注释掉了。

所以我的问题是,是否可以使用 php 和 JavaScript 以这种方式运行 bash 脚本?还是有另一种方法可以在没有 JavaScript 的情况下将该信息显示到网页上?

<script type="text/javascript">
  var tester = '<?php shell_exec("/opt/bin/test -a"); ?>';      
     $(document).ready(function() {
            $("#selector").on("change", function() {
                    if ($("#selector").val() == "test1") {
                        $("#rightselection").css("background-color", "red");
                        $("#rightselection").html(tester);
                    }
                    if ($("#selector").val() == "test2") {
                        $("#rightselection").css("background-color", "blue");
                        $("#rightselection").html("test2");
                    }
                    if ($("#selector").val() == "test3"){
                        $("#rightselection").css("background-color", "yellow");
                        $("#rightselection").html("test3");
                    }
                    if ($("#selector").val() == ""){
                        $("#rightselection").css("background-color", "green");
                        $("#rightselection").html("This is a Test");
                    }
            });
    });
</script>
4

2 回答 2

1

如果您的结果是多行,则需要用转义序列或 HTML 替换换行符。尝试更换

var tester = '<?php shell_exec("/opt/bin/test -a"); ?>';

var tester = '<?php echo str_replace(PHP_EOL, '<br/>', shell_exec("/opt/bin/test -a")); ?>';
于 2012-10-16T08:21:46.417 回答
1

尝试运行命令将输出复制到标准输出:

<?php shell_exec("/opt/bin/echkchunk -a 2>&1"); ?>

如果运行命令时发生错误,shell_exec 将返回 null,2>&1即使命令失败,您也将获得整个输出。

sh 命令: exec 2>&1

于 2012-10-16T08:12:22.503 回答