如何通过使用PHP重新启动Linux系统(Debian)

我想用PHP执行一个linux命令

myfile.php:

<?php $output = shell_exec('ls'); echo "<pre>$output</pre>"; ?> 

有用!

但是,当我从ls更改linux命令reboot ,没有任何反应!

所以我试图find另一个解决scheme:

mycode.html:

 <button type="button" onclick="/var/www/myscript.sh">Click Me!</button> 

myscript.sh:

 sudo reboot 

它也不起作用!

任何人都可以帮助我解决这个问题。

谢谢你的帮助。

缺省情况下,reboot命令必须以root身份执行。 如果您的Web服务器在root帐户下运行,您将能够做到这一点,但这是非常不寻常的命题。

通常情况下,Web服务器运行在有限的帐户,不能做太多,当然不能执行重新启动。 如果你真的想这样做的话,一定要非常小心。 提供这种方法的标准方法是创建特殊的包装器(很可能是suid),它允许在提升的权限下运行之前检查许多条件。

另一个解决方案是让PHP创建标志文件或插入特殊的数据库条目,这将由另一个以root身份运行的服务进行检查,注意到该标志并最终执行重新引导。

正如@ mvp所说,你不能以非root用户身份执行重启。

一个简单的方法是使用cron作业。

你的myscript.sh将是:

 #!/bin/bash touch /tmp/reboot.now 

然后创建一个cron作业来检查这个文件是否存在:

 #!/bin/bash if [ -f /tmp/reboot.now ]; then rm -f /tmp/reboot.now /sbin/shutdown -r now fi 

然后将您的服务器配置为每分钟执行一次该脚本

 * * * * * /usr/local/sbin/reboot.sh 

而且不要忘了给执行权限的文件,当然。

希望能帮助到你

编辑:当然你的myscript.sh可以用fopenfclose代替

除了Sal00m的回答

ROOT crontab

 * * * * * /usr/local/sbin/checkreboot.sh 

checkreboot.sh

 #!/bin/bash if [ -f /var/www/html/reboot.server ]; then rm -f /var/www/html/reboot.server /sbin/shutdown -r now fi 

reboot.php

 <?php $filehandler = fopen("/var/www/html/reboot.server",'w'); fwrite($filehandler,"Reboot now\n"); fclose($filehandler); ?> 

From http://www.linuxquestions.org/questions/linux-newbie-8/shutdown-and-reboot-linux-system-via-php-script-713379/#post3486126