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.

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.

  • 1
    Worked by editing sudoers with sudo visudo and creating that line for www-data user! – thibmaek Dec 31 '14 at 12:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.