2012-05-31 12 views
59

यहPHP में सिस्टम(), exec() और shell_exec() के अंतर क्या हैं?

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

लेकिन अपने मतभेदों को क्या कर रहे हैं के तीन पीएचपी कार्यों के द्वारा एक बाहरी कमांड को चलाने के लिए संभव है? अपने विशिष्ट अनुप्रयोगों के बावजूद, ज्यादातर मामलों में, समान रूप से उपयोग किया जा सकता है। मुझे यह जानकर उत्सुकता है कि उन्हें वही पसंद किया जाता है जब उन्हें समान रूप से उपयोग किया जा सकता है। उदाहरण के लिए, किसी फ़ाइल को अनजिप करने या फ़ोल्डर को संपीड़ित करने के लिए (टैर कमांड के साथ), जिसे किसी को प्राथमिकता दी जाती है (शायद प्रदर्शन बिंदु से)?

अद्यतन: एक और सवाल में मैंने पाया है एक बहुत ही उपयोगी link इन कार्यों के लिए विभिन्न पहलुओं का वर्णन। मैं यहां लिंक साझा करता हूं, क्योंकि अन्य सुरक्षा समस्याओं और अन्य पहलुओं को बेहतर ढंग से समझने के लिए उपयोग कर सकते हैं।

+5

नामुकम्मल नहीं हो सकता है, लेकिन मैनुअल संबंधित कार्यों के बारे में क्या कहा? – GordonM

+2

इसके अलावा, आप passthru भूल गए हैं() :) – GordonM

+0

@GordonM मैंने मैनुअल पढ़ा, लेकिन मुझे प्रत्येक फ़ंक्शन के लिए वरीयता नहीं समझती है। कई मामलों के लिए, उनका समान रूप से उपयोग किया जा सकता है। मैं एक व्यावहारिक दृश्य चाहता हूँ। – Googlebot

उत्तर

85

exec - एक बाहरी प्रोग्राम निष्पादित

system - एक बाहरी प्रोग्राम निष्पादित और आउटपुट

shell_exec प्रदर्शित - खोल के माध्यम से आदेश निष्पादित और एक स्ट्रिंग के रूप पूरा उत्पादन लौट

इसलिए यदि आप डॉन आउटपुट की जरूरत नहीं है, मैं निष्पादन के साथ जाना होगा।

अधिक जानकारी:

+1

ग्रेट उत्तर दोस्त। –

+6

'exec()' आउटपुट की आखिरी पंक्ति देता है, इसलिए यदि आप एक साधारण प्रोग्राम को कॉल कर रहे हैं जो 'व्हामी' या 'pwd',' exec() 'जैसे एक मान को आउटपुट करता है तो सही है। – alanaktion

संबंधित मुद्दे