我正在尝试在PHP中执行Linux命令,以下是我的示例代码:
$command = "last -F";
$o = shell_exec($command);
print_r($o);
大多数 Linux 命令会输出内容,但 Last -F
命令没有输出。为什么会这样?
我正在尝试在PHP中执行Linux命令,以下是我的示例代码:
$command = "last -F";
$o = shell_exec($command);
print_r($o);
大多数 Linux 命令会输出内容,但 Last -F
命令没有输出。为什么会这样?
您正在以Web用户(nobody
或www-data
)的身份执行该命令,这是一个有限特权用户。您必须以root身份执行该命令。不幸的是,给予Web用户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
,它将给出该命令的确切输出。