Một vài nét riêng biệt không được chạm vào đây:
- Với exec (), bạn có thể truyền một biến param tùy chọn sẽ nhận được một mảng các dòng đầu ra. Trong một số trường hợp, điều này có thể tiết kiệm thời gian, đặc biệt nếu đầu ra của các lệnh đã ở dạng bảng.
Đối chiếu:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
Ngược lại, nếu đầu ra của lệnh là xml hoặc json, thì việc mỗi dòng là một phần của mảng không phải là điều bạn muốn, vì bạn sẽ cần xử lý sau đầu vào thành một dạng khác, vì vậy trong trường hợp đó, hãy sử dụng shell_exec .
Cũng đáng chỉ ra rằng shell_exec là bí danh cho toán tử ngược, dành cho những người được sử dụng để * nix.
$out = `ls`;
var_dump($out);
exec cũng hỗ trợ một tham số bổ sung sẽ cung cấp mã trả về từ lệnh đã thực hiện:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
Như đã lưu ý trong trang hướng dẫn shell_exec, khi bạn thực sự yêu cầu mã trả về từ lệnh đang được thực thi, bạn không có lựa chọn nào khác ngoài sử dụng exec.
date
,whoami
,ifconfig
,netstat
.