I built this dashboard for my Raspberry Pi and would like to be able to shut it down and reboot it with a click.
I have the following in my html which redirects to a script and gets a PHP page with ajax:
<a href="#" class="reboot"></a>
<script>
document.querySelector(".reboot").addEventListener('click', function(){
$.get('reboot.php');
});
</script>
and the php file reboot.php
looks like this:
<?php
exec('sudo reboot');
?>
But this is doing nothing, it's not rebooting or shutting down using this code.
-
2Have a look at the comments to this question regarding permissions raspberrypi.stackexchange.com/questions/26150/… you may also want to add an echo before the exec to make sure that the ajax/javascript call is working correctly.Steve Robillard– Steve Robillard2014年12月29日 15:13:39 +00:00Commented Dec 29, 2014 at 15:13
1 Answer 1
But this is doing nothing, it's not rebooting or shutting down using this code.
If you are using apache, it runs as its own user and does not have permission to run reboot
with sudo
. To do that, you have to edit /etc/sudoers
(as root) and add a line:
apache ALL = NOPASSWD: /sbin/reboot, /sbin/halt
That's presuming the user name is apache
-- I'm not sure what it actually is since I don't have it installed on the pi. To check, try in order:
grep apache /etc/passwd
grep httpd /etc/passwd
grep www-data /etc/passwd
The first one of those that returns a line is the name you should use. Alternately, you could just look at top
while the server is running and find the user name. There is one instance of apache/httpd that runs root, but there are others that are unprivileged and those execute PHP.
-
1Worked by editing sudoers with
sudo visudo
and creating that line for www-data user!thibmaek– thibmaek2014年12月31日 12:12:57 +00:00Commented Dec 31, 2014 at 12:12