Trong PHP, shell_exec()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:

1. shell_exec()

  • Chức năng: Hàm này thực thi một lệnh shell và trả về toàn bộ đầu ra của lệnh đó dưới dạng một chuỗi.
  • Đầu ra: 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.
  • Sử dụng: Thích hợp cho các lệnh mà bạn chỉ cần lấy đầu ra mà không cần quan tâm đến mã thoát.
  • Ví dụ:
$output = shell_exec('ls -l');
echo "$output";

2. exec()

  • Chức năng: Hàm này thực thi một lệnh shell và cho phép bạn lấy cả đầu ra và mã thoát của lệnh đó. Bạn có thể chỉ định một biến để chứa đầu ra của lệnh.
  • Đầu ra: 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).
  • Mã thoát: Bạn có thể lấy mã thoát của lệnh bằng cách sử dụng tham số thứ hai.
  • Ví dụ:
$output = [];
$return_var = 0;
exec('ls -l', $output, $return_var);
echo "Mã thoát: $return_varn";
echo "" . implode("n", $output) . "";

Tóm tắt

Đặc điểmshell_exec()exec()
Đầu raTrả về toàn bộ đầu ra dưới dạng chuỗiTrả về chuỗi cuối cùng và lưu các dòng đầu ra vào một mảng
Mã thoátKhông cóCó thể lấy mã thoát thông qua tham số thứ hai
Mục đích sử dụngKhi chỉ cần lấy đầu raKhi cần cả đầu ra và mã thoát