Как перезагрузить Linux-систему (Debian) с помощью php

Я хочу выполнить команду linux с помощью PHP

myfile.php:

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

Оно работает!

Но когда я меняю команду linux из ls на reboot , ничего не происходит!

Поэтому я попытался найти другое решение:

mycode.html:

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

myscript.sh:

 sudo reboot 

Это тоже не работает!

Пусть кто-нибудь поможет мне решить эту проблему.

Спасибо за вашу помощь.

По умолчанию команда reboot должна выполняться как root. Вы могли бы это сделать, если ваш веб-сервер работал под учетной записью root, но это очень необычное предложение.

Как правило, веб-сервер работает под ограниченной учетной записью, которая не может многое сделать и, конечно же, не может выполнить перезагрузку. Если вы действительно хотите это сделать, это должно быть сделано с большой осторожностью. Стандартный способ обеспечить это – создать специальную оболочку (скорее всего, 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 

И не забудьте предоставить права на выполнение в файл, конечно.

Надеюсь, поможет

EDITED: Конечно, ваш myscript.sh может быть php с fopen и fclose вместо этого

В дополнение к ответу 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); ?> 

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