【问题标题】:Executing a bash script using php exec and javascript使用 php exec 和 javascript 执行 bash 脚本
【发布时间】:2012-10-16 08:05:55
【问题描述】:

我正在尝试在下面运行这个 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>

【问题讨论】:

  • 您希望接收日期的方式是向为您读取的 php 文件发出 ajax 请求。
  • 这比将 PHP 嵌入到 JavaScript 中要干净得多。
  • 感谢 Dainis,我用一些 ajax 分离了 php,现在脚本可以正常工作了。

标签: php javascript html bash


【解决方案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")); ?>';

【讨论】:

  • 感谢大家的帮助,Dainis 建议分离出 php 并使用一些 ajax 对我有用。
【解决方案2】:

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

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

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

sh command: exec 2>&1

【讨论】:

  • 我编辑了您的帖子以正确格式化代码,但您应该考虑解释这究竟是做什么的。我相信解释会帮助原始海报以及所有未来的访客。祝你好运! :)
  • 感谢您的建议!我应该补充一点,我在尝试获取 convert 的输出以调整图像大小时使用了该代码。和@user1749264!您应该尝试回显输出;)
  • 酷,从 PHP 运行 bash 真是太棒了;)我知道你已经成为 SO 的成员有一段时间了,但作为复习,你可以使用这个 edit 链接将解释添加到你的回答。希望这可以帮助! :)
猜你喜欢
  • 2010-10-08
  • 2015-02-23
  • 2012-10-09
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 2013-09-05
  • 1970-01-01
相关资源
最近更新 更多