5

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.

Kev
2651 gold badge2 silver badges10 bronze badges
asked Dec 29, 2014 at 14:42
1
  • 2
    Have 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. Commented Dec 29, 2014 at 15:13

1 Answer 1

6

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.

answered Dec 29, 2014 at 16:01
1
  • 1
    Worked by editing sudoers with sudo visudo and creating that line for www-data user! Commented Dec 31, 2014 at 12:12

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.