0

我正在尝试通过以下方式执行 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
4

2 回答 2

2

试试这个:

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

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

于 2009-08-19T15:01:20.533 回答
2

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

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

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

$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
echo implode("\n", array_reverse(explode("\n", $log)));
于 2009-08-19T15:44:00.380 回答