Beberapa perbedaan yang tidak disentuh di sini:
- Dengan exec (), Anda dapat melewatkan variabel param opsional yang akan menerima larik garis output. Dalam beberapa kasus ini mungkin menghemat waktu, terutama jika output dari perintah sudah tabular.
Membandingkan:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
Sebaliknya, jika output dari perintah adalah xml atau json, maka memiliki setiap baris sebagai bagian dari array bukanlah apa yang Anda inginkan, karena Anda harus memposting-proses input ke dalam bentuk lain, jadi dalam hal ini gunakan shell_exec .
Perlu juga disebutkan bahwa shell_exec adalah alias untuk operator backtic, bagi mereka yang terbiasa * nix.
$out = `ls`;
var_dump($out);
exec juga mendukung parameter tambahan yang akan memberikan kode kembali dari perintah yang dijalankan:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
Seperti dicatat dalam halaman manual shell_exec, ketika Anda benar-benar membutuhkan kode kembali dari perintah yang dieksekusi, Anda tidak punya pilihan selain menggunakan exec.
date
,whoami
,ifconfig
,netstat
.