Trong PHP, shell_exec()
và exec()
là hai hàm được sử dụng để thực thi các lệnh hệ thống từ mã PHP. Tuy nhiên, chúng có một số khác biệt quan trọng về cách hoạt động và cách chúng xử lý đầu ra. Dưới đây là sự phân biệt giữa chúng:
shell_exec()
shell_exec()
sẽ trả về kết quả hoàn chỉnh của lệnh được thực thi. Nếu lệnh không thành công hoặc không có đầu ra, nó sẽ trả về NULL
.$output = shell_exec('ls -l'); echo "$output";
exec()
exec()
trả về chuỗi cuối cùng được tạo ra từ lệnh, trong khi tất cả các dòng đầu ra khác sẽ được lưu trữ trong một mảng (nếu bạn chỉ định).$output = []; $return_var = 0; exec('ls -l', $output, $return_var); echo "Mã thoát: $return_varn"; echo "" . implode("n", $output) . "";
Đặc điểm | shell_exec() | exec() |
---|---|---|
Đầu ra | Trả về toàn bộ đầu ra dưới dạng chuỗi | Trả về chuỗi cuối cùng và lưu các dòng đầu ra vào một mảng |
Mã thoát | Không có | Có thể lấy mã thoát thông qua tham số thứ hai |
Mục đích sử dụng | Khi chỉ cần lấy đầu ra | Khi cần cả đầu ra và mã thoát |