在PHP中执行shell脚本时出错

时间:2009-08-19 14:56:16

标签: php shell shellexecute shell-exec

我试图通过以下方式执行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

2 个答案:

答案 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)));