5

以下の JavaScript を実行しようとしていますが、php shell_exec コマンドの出力が表示されません。

test -a bash スクリプトを実行すると、一連の ID 34535、25643、23262 などが出力されます。PHPファイルで単純に実行すると、正常に動作します。

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

しかし、以下で実行しようとして test1 を選択すると、画面に何も出力されません。クロム開発者ツールを見ると、test1が次のように選択されている場合のコードが表示されます

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

コメントアウトされているかのように。

私の質問は、php と JavaScript を使用してこの方法で bash スクリプトを実行することは可能ですか? または、JavaScript を使用せずにその情報を Web ページに表示する別の方法はありますか?

<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

コマンドを実行して、出力をstdoutにコピーしてみてください。

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

コマンドの実行中にエラーが発生した場合、shell_execはnullを返します。これを使用2>&1すると、コマンドが失敗した場合でも出力全体が取得されます。

shコマンドを参照してください:exec 2>&1

于 2012-10-16T08:12:22.503 に答える
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 に答える