我试图通过以下方式执行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
答案 0 :(得分:2)
试试这个:
echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1");
它会将stderr重定向到stdout,所以希望你能看到它为什么不起作用
答案 1 :(得分:2)
但是,我想说如果可能的话,避免从PHP启动系统调用是个好主意。调试可能很麻烦,如果你传递参数,很容易产生安全漏洞。原生PHP代码更容易处理。
'tac'很简单,你应该能够在PHP中做得很好。例如,一次性吐出整个文件的trival版本:
$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
echo implode("\n", array_reverse(explode("\n", $log)));