2012-05-31 19 views
59

Có thể chạy một lệnh bên ngoài bằng ba chức năng PHP củaSự khác biệt của system(), exec() và shell_exec() trong PHP là gì?

system(); 
exec(); 
shell_exec(); 

nhưng sự khác biệt của họ là gì? Mặc dù các ứng dụng cụ thể của họ, trong hầu hết các trường hợp, các ứng dụng có thể được sử dụng như nhau. Tôi tò mò muốn biết cái nào được ưa thích nhất khi chúng có thể được sử dụng như nhau. Ví dụ, để giải nén một tập tin hoặc nén một thư mục (với lệnh tar), cái nào được ưu tiên (có thể là từ quan điểm hiệu năng)?

UPDATE: Trong một câu hỏi khác, tôi thấy rất hữu ích link mô tả các khía cạnh khác nhau cho các chức năng này. Tôi chia sẻ liên kết ở đây, vì người khác có thể sử dụng để hiểu rõ hơn về các vấn đề bảo mật và các khía cạnh khác.

+5

Không phải là không liên tục, nhưng đã hướng dẫn nói gì về các chức năng tương ứng? – GordonM

+2

Ngoài ra, bạn quên passthru() :) – GordonM

+0

@GordonM Tôi đọc hướng dẫn sử dụng, nhưng tôi không hiểu sở thích của từng chức năng. Đối với nhiều trường hợp, chúng có thể được sử dụng như nhau. Tôi muốn có một cái nhìn thực tế. – Googlebot

Trả lời

85

exec - Thực hiện một chương trình bên ngoài

system - Thực hiện một chương trình bên ngoài và hiển thị đầu ra

shell_exec - Thực hiện lệnh qua vỏ và trả về kết quả hoàn toàn như là một chuỗi

vì vậy nếu bạn don không cần đầu ra, tôi sẽ đi với exec.

Thông tin chi tiết:

+1

Câu trả lời tuyệt vời dude. –

+6

'exec()' trả về dòng đầu ra cuối cùng, vì vậy nếu bạn đang gọi một chương trình đơn giản chỉ xuất ra một giá trị đơn lẻ như 'whoami' hoặc' pwd', 'exec()' là hoàn hảo. – alanaktion

Các vấn đề liên quan