我正在尝试用PHP执行linux命令,这是我的示例代码:
$command = "last -F";
$o = shell_exec($command);
print_r($o);
大多数Linux命令都给我一个输出,但对于Last -F
命令,我没有输出。为什么会这样?
答案 0 :(得分:0)
试试This Explaination。您的问题可能是last -F
的最后一行是新行。 shell_exec()
只返回命令的最后一行,因此,如果该行为空,则什么也得不到,nada。
作为替代方案,尝试exec()
,这将允许您捕获返回值(执行的成功或失败)以及命令的整个输出。查看here
答案 1 :(得分:0)
您正在以web用户(nobody
或www-data
)执行该命令,该用户是有限的特权用户。您必须以root身份执行该命令。不幸的是,给网络用户提供sudo权限或完全权限是一个坏主意。因此,我建议创建一个执行last -F
的cron或后台脚本,并将输出写入文件。您可以从PHP脚本中读取该文件。
您可以让脚本在这样的后台运行。
#!/bin/bash
while [ true ]; do
last -F > /tmp/myfile
done
将代码保存为mycron.sh
chmod +x mycron.sh
mycron.sh &
从PHP程序中读取文件/tmp/myfile
。它将给出该命令的确切输出。