я есть попробовать команду, как system(reboot)
exec(reboot)
и system("/ect/init.d/networking restart");
, но не случилось что-тоМожно использовать PHP для перезагрузки Linux-сервера или перезагрузки dhcp?
, как я могу это сделать?
я есть попробовать команду, как system(reboot)
exec(reboot)
и system("/ect/init.d/networking restart");
, но не случилось что-тоМожно использовать PHP для перезагрузки Linux-сервера или перезагрузки dhcp?
, как я могу это сделать?
Вам нужно добавить пользователя apache в sudoers с помощью NOPASSWD и предоставить только доступ к перезагрузке i.e, а затем запустить систему («sudo reboot»);
Для sudoersfile:
www-data reboot = NOPASSWD: /sbin/reboot
Это даст апачский доступ к перезагрузке сервера, но rememer, что все пользователи системы, то будет иметь возможность перезагрузиться.
Попробуйте это:
<?php
shell_exec("/usr/sbin/reboot");
exec("/usr/sbin/reboot");
system("/usr/sbin/reboot");
?>
Для получения более подробной информации смотрите здесь:
Если вы пытаетесь сделать это через апача и CGI версии PHP - то ответы нет". PHP будет выполняться как тот же пользователь, что и apache, и предоставление этому пользователю доступа к вашей системе будет чрезвычайно опасным.
Возможно, ваш PHP-интерпретатор не работает как пользователь с соответствующими разрешениями для этого. Обычно они должны выполняться как root, что является плохой идеей для PHP в целом, поскольку одна маленькая дыра в безопасности может видеть, что вся машина подвергается риску.
Если вы действительно хотите сделать это, я бы предложил посмотреть на использование sudo, чтобы предоставить ограниченный дополнительный доступ для пользователя, которым работает веб-сервер.
Другой альтернативой sudo для некоторых систем является dbus. С правильными привилегиями dbus вы можете отправить инструкцию для перезапуска, например.
dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Работает из командной строки, и я считаю, что существуют привязки dbus для php.
как все указано, довольно опасно. Лучше использовать некоторый сеанс ssh для перезагрузки/перезагрузки сервера/служб.
В случае, если вы все еще хотите это сделать, дайте apache запускающему пользователю (www) sudo right.
на RHEL я должен был прокомментировать линию, которая требует TTY на sudoers конфигурационный файл:
#Defaults requiretty
Не перезагружать обычно в/SBIN? – Flexo
@awoodland вы правы, изменено – infinity
На моей тестовой системе, по крайней мере, это/sbin/reboot, а не/usr/sbin/reboot. FHS (http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINSYSTEMBINARIES) подразумевает, что это тоже место. – Flexo