在PHP中执行shell脚本时出错

在PHP中执行shell脚本时出错,php,shell,shellexecute,shell-exec,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

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

//输出:-rw-r-----2根kusmuk 28640 Aug 19 17:44 kusmuk.org
//输出:/home/kusmuk/public\u html
试试这个:

echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1");
它会将stderr重定向到stdout,因此希望您能看到它不工作的原因

尝试以下方法:

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

它会将stderr重定向到stdout,所以希望您能看到它为什么不起作用

Greg的提示很好。您可能最终会遇到某种权限问题

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

“tac”非常简单,您应该能够在PHP中很好地完成它。例如,一个简单的版本,一次完成整个文件:

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

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

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

“tac”非常简单,您应该能够在PHP中很好地完成它。例如,一个简单的版本,一次完成整个文件:

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

可能是简单的“tac”不在路径中,也可能是简单的“tac”不在路径中。