我真的需要用PHP exec关闭ubuntu.但我可能在获得许可时遇到了一些问题.
echo exec('whoami')
Run Code Online (Sandbox Code Playgroud)
返回'没人';
所以我放入了控制台
adduser nobody admin
Run Code Online (Sandbox Code Playgroud)
并尝试过
exec("shutdown -h now");
Run Code Online (Sandbox Code Playgroud)
但它不起作用;(
Pek*_*ica 10
为用户提供PHP作为root权限运行是非常危险的.这根本不是一个好主意,因为如果PHP脚本中的漏洞被利用,您将打开整个服务器.在生产服务器上,这绝对是不可接受的.
我知道安全执行此操作的唯一方法是让cron作业每分钟都以root身份运行一个shell脚本.shell脚本测试是否存在文件shutdown_now.txt.如果文件存在,脚本将启动关闭过程.如果有这样的指示,PHP脚本会创建关闭文件.
我不太熟悉shell脚本提供一个例子,但我确信有人可以在必要时使用.
小智 9
实际上Pekka给了你一个很好的建议.在你的php文件中创建一个强制重启的文件,这很简单
$file = fopen('.reboot-server',"w");
fwrite($file, 'reboot');
close($file);
Run Code Online (Sandbox Code Playgroud)
制作一个将检查该文件的bash脚本
#!/bin/bash
if [ -f /var/www/html/.reboot-server ]; then
rm -f /var/www/html/.reboot-server
if [ -f /var/www/html/.reboot-server ]; then
echo "Can't remove file .reboot-server"
else
/sbin/shutdown -r now
fi
fi
Run Code Online (Sandbox Code Playgroud)
并在cronjob下添加它
*/1 * * * * root /home/scripts/reboot.sh
Run Code Online (Sandbox Code Playgroud)