运行“最后的”Linux命令

我试图在PHP中执行一个linux命令,这里是我的示例代码:

$command = "last -F"; $o = shell_exec($command); print_r($o); 

大多数Linux命令给我一个输出,但是对于Last -F命令,我没有输出。 为什么这样?

试试这个解释 。 你的问题可能是last- last -F的最后一行是新行。 shell_exec()只返回命令的最后一行,因此,如果这行是空的,你什么也得不到,nada。

作为替代,尝试exec() ,这将允许您捕获返回值(执行成功或失败)以及整个命令的输出。 看看这里

您正在以web用户身份执行该命令( nobodywww-data ),这是一个有限的特权用户。您必须以root身份执行该命令。 不幸的是,给sudo权限或完全权限的网络用户是一个坏主意。 所以我建议做一个cron或者后台脚本来执行last -F并把输出写到一个文件中。 您可以从您的PHP脚本中读取该文件。

你可以使脚本像这样在后台运行。

  #!/bin/bash while [ true ]; do last -F > /tmp/myfile done 

将代码保存为mycron.sh

 chmod +x mycron.sh mycron.sh & 

从PHP程序中读取文件/tmp/myfile 。 它会给出该命令的确切输出。