Как запустить команду от пользователя через shell_exec?
После определенных манипуляций с синхронизацией есть задача перезапуск сервера apache, сейчас это делается в ручном режиме.
Подскажите как правильно запустить нужную мне команду через shell_exec от имени пользователя, а не от пользователя apache?
Для примера, пробую в коде: shell_exec('killall -9 apache2');
-9 это не лучший вариант завершения службы, а самый жесткий, до него как минимум нужно попробовать потушить демона нормальным способом, так же как не сложно догадатья php.net/manual/en/function.exec.php не позволит вам выйти за текущего юзеара и тем более остановить апачь, или вы думаете что такой метод взлома сервера никто не догадался закрыть ?
Так что вам нужно подключиться по ssh к этому серверу используя ключи или пароли и сделать все как-будто вы находитесь на совершенно другом сервере.
Ну или написать демона постучаться к нему и он уже перезапустит. https://disnetern.ru/ssh-on-remote-server/
в принципе можно мониторинг настроить, вот этот умеет выполнять удаленные команды по сработке, в том числе и перезапускать. monit-it.ru
Советую делать это в два шага.
Скрипт принимает задачу и записывает её в базу.
Каждую минуту запускается скрипт по крону от рута, смотрит есть ли задачи в базе и выполняет их.
После выполнения - удаляет задачу или помечает её как выполненную.