Kilka wyróżnień, których nie poruszono tutaj:
- Za pomocą exec () możesz przekazać opcjonalną zmienną param, która otrzyma tablicę linii wyjściowych. W niektórych przypadkach może to zaoszczędzić czas, zwłaszcza jeśli dane wyjściowe poleceń są już tabelaryczne.
Porównać:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
I odwrotnie, jeśli wynikiem działania polecenia jest xml lub json, to umieszczenie każdej linii jako części tablicy nie jest tym, czego potrzebujesz, ponieważ musisz przetworzyć dane wejściowe w innej formie, więc w takim przypadku użyj shell_exec .
Warto również zauważyć, że shell_exec jest aliasem dla operatora backtic, dla tych używanych do * nix.
$out = `ls`;
var_dump($out);
exec obsługuje również dodatkowy parametr, który zapewni kod powrotu z wykonanego polecenia:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
Jak zauważono na stronie podręcznika shell_exec, kiedy faktycznie potrzebujesz kodu powrotu z wykonywanej komendy, nie masz innego wyjścia, jak użyć exec.
date
,whoami
,ifconfig
,netstat
.