कुछ भेद जो यहां नहीं थे:
- निष्पादन () के साथ, आप एक वैकल्पिक पैराम चर पारित कर सकते हैं जो आउटपुट लाइनों की एक सरणी प्राप्त करेगा। कुछ मामलों में यह समय बचा सकता है, खासकर यदि कमांड का आउटपुट पहले से ही सारणीबद्ध है।
की तुलना करें:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
इसके विपरीत, यदि कमांड का आउटपुट xml या json है, तो ऐरे के प्रत्येक भाग के रूप में प्रत्येक पंक्ति में वह नहीं है जो आप चाहते हैं, जैसा कि आपको इनपुट को किसी अन्य रूप में पोस्ट-प्रोसेस करने की आवश्यकता होगी, इसलिए उस स्थिति में shell_exec का उपयोग करें ।
यह भी इंगित करने के लायक है कि शेल_एक्सईसी बैकटिक ऑपरेटर के लिए एक उपनाम है, जो कि * निक्स के लिए उपयोग किया जाता है।
$out = `ls`;
var_dump($out);
निष्पादन अतिरिक्त पैरामीटर का भी समर्थन करता है जो निष्पादित कमांड से रिटर्न कोड प्रदान करेगा:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
जैसा कि shell_exec मैन्युअल पृष्ठ में नोट किया गया है, जब आपको वास्तव में निष्पादित किए जा रहे कमांड से रिटर्न कोड की आवश्यकता होती है, तो आपके पास निष्पादन का उपयोग करने के अलावा कोई विकल्प नहीं होता है।
date
,whoami
,ifconfig
,netstat
।