是否可以使用php重新启动电脑?
答案 0 :(得分:3)
您可以使用exec()
或system()
,但权限将是问题,因为PHP运行在apache
的用户身上。
作为一种快速解决方法,可以授予用户apache重启权限。根据您的系统,设置这可能非常困难。
您可以做的另一种方法是让Cron任务(属于root)每隔几分钟(或几秒钟)检查一些文件,并让您的PHP程序编辑该文件。该文件设置为只能由Apache编辑。这样做要容易得多。
希望这有帮助。
答案 1 :(得分:1)
您可以使用exec()
或system()
方法运行系统命令来重新启动计算机。
答案 2 :(得分:1)
在我们的系统中,我们执行保罗所说的那个。
答案 3 :(得分:1)
我对运行Debian / Lenny的CarPC设置有同样的需求。每当连接到该服务的端口时,我都将inetd配置为运行/ sbin / reboot。
然后我有一个PHP脚本对本地主机/端口执行fsockopen()并立即执行重启。
快速设置(debian - 为您的系统修改):
在/etc/services
中添加一行"reboot 88/tcp"
(或您想要的任何端口)
在/etc/inetd.conf
添加一行"reboot stream tcp nowait root /sbin/reboot"
Restart inetd using /etc/init.d/openbsd-inetd restart
现在连接到localhost:88,它将重启系统。
如果您的系统运行xinetd,您可以将其配置为仅接受来自localhost的连接以稍微加强安全性。无论如何,这仍然是一个黑客。
答案 4 :(得分:0)
通常,您需要超级用户权限才能重新启动计算机。但以超级用户身份运行Web服务器是一种不好的做法。我建议做一些进程间通信。 E. g。 PHP脚本在文件中写入一个密钥,然后一个cron作业读取该文件并重新启动计算机。
我不确定通过网络重启计算机是个好主意。你为什么要这样做?
答案 5 :(得分:0)
这个答案适用于基于Linux的服务器。
危险:从php使用system(),在系统中,使用“sudo shutdown -r now”重启,“sudo shutdown -h now”关闭。
在/ etc / sudoers中,添加为apache用户运行shutdown的权限
一个问题是sudo可以提示输入密码。
删除apache用户的密码(但不要运行sshd,telnetd,ftpd等等)或查看你的/ etc / sudoers是否有无密码配置。关于第200行的“man sudoers”和第270行再次说Tag_Spec可以包含NOPASSWD来指定用户不必使用其密码重新进行身份验证来运行sudo命令。
SAFER:token / cron让php在某处写一个文件。编写一个由cron作为root运行的脚本,这样如果该文件存在,则删除该文件,然后运行shutdown或restart。