Как выполнить команду оболочки из скрипта php

Я хотел бы создать php-скрипт для выполнения команды оболочки и возврата ее вывода. Серверу нужен секретный ключ. Когда я впервые решил проверить это, я создал это:

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

Все прошло отлично. Но когда я изменил $command на команду, которую я действительно хотел запустить:

 $command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig"; 

он дал мне этот результат:

 You need root privileges to run this script 

Я предполагаю, что мне нужно использовать sudo . Конечно, это потребует размещения файла pem где-то на сервере. Предполагая, что я это делаю, что именно должно $command ? Должен ли я использовать shell_exec() , exec() , system() или что-то еще?

Не имеет значения, какую функцию php вы используете для запуска скрипта – в чем недостает авторизация вашей учетной записи пользователя.

Используйте sudo (предварительно настройте пользователя веб-сервера для выполнения точной команды без пароля с помощью visudo и префикс команды sudo ) или настройте скрипт setuid, который выполняет эту команду сам по себе.

Вам действительно нужно сделать, чтобы ваш веб-сервер работал как конкретный пользователь (кроме, например, «никто»), или предоставлял эти права пользователю тому, что вы хотите выполнить.

См. Также: PHP shell_exec () и sudo: должен быть установленным root