Chciałbym utworzyć skrypt php, aby wykonać polecenie powłoki i zwrócić jego wynik. Serwer wymaga klucza prywatnego. Kiedy po raz pierwszy zdecydowałem się przetestować to, stworzyłem to:Jak wykonać polecenie powłoki ze skryptu php?
<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>
To działało dobrze. Ale kiedy zmienił $command
do polecenia naprawdę chciałem uruchomić:
$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";
dał mi ten wynik:
You need root privileges to run this script
Domyślam się, że trzeba użyć sudo
. Oczywiście będzie to wymagało umieszczenia pliku PEM gdzieś na serwerze. Zakładając, że to zrobię, czym dokładnie powinien być $command
? Czy powinienem używać shell_exec()
, exec()
, system()
lub czegoś innego?
Chociaż * także * ma znaczenie, że konto użytkownika musi być autoryzowane, nie oznacza to, że nie ma najlepszego wyboru dla funkcji PHP. Który jest najlepszy? –
@Kenneth Vogt 'exec', ponieważ nie wiąże się niepotrzebnie z powłoką i zwraca wynik, lub' passthru', który bezpośrednio wyprowadza wynik, ale wymagałby modyfikacji oryginalnego kodu. – phihag