【问题标题】:error executing shell script in PHP在 PHP 中执行 shell 脚本时出错
【发布时间】:2009-08-19 14:56:15
【问题描述】:

我正在尝试通过以下方式执行 shell 命令:

<php echo shell_execute("tac /home/kusmuk/access-logs/kusmuk.org"); ?>

但它没有给出任何输出。可能是什么原因?

虽然它不起作用,但以下几行按预期工作:

<php echo shell_execute("ls -al triogrup.com"); ?>
//outputs: -rw-r----- 2 root kusmuk 28640 Aug 19 17:44 kusmuk.org

<php echo shell_execute("pwd"); ?>
//outputs: /home/kusmuk/public_html

【问题讨论】:

    标签: php shell shellexecute shell-exec


    【解决方案1】:

    格雷格的建议很好。您最终可能会遇到某种权限问题。

    但是,如果可能的话,我会说避免从 PHP 启动系统调用是个好主意。调试可能会很痛苦,如果您要传递参数,则很容易造成安全漏洞。原生 PHP 代码更容易处理。

    ‘tac’非常简单,你应该可以在 PHP 中很好地完成它。例如,一次性吐出整个文件的简单版本:

    $log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
    echo implode("\n", array_reverse(explode("\n", $log)));
    

    【讨论】:

      【解决方案2】:

      试试这个:

      echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1");
      

      它将stderr重定向到stdout,所以希望你能明白为什么它不工作

      【讨论】:

      • 这可能很简单,比如 'tac' 不在 PATH 中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 2013-06-13
      相关资源
      最近更新 更多