您好,登錄后才能下訂單哦!
$cmd = "rm 1.txt";//刪除一個(gè)不存在的文件,查看報(bào)錯(cuò)信息 $res = doShell($cmd); var_dump($res); //該函數(shù)沒(méi)有限制條件,可以直接放在代碼中使用 function doShell($cmd,$cwd=null) { $descriptorspec = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w") // stderr ); // $cmd = './test.sh'; // 替換為你要執(zhí)行的shell腳本 /* * 返回值 * 返回表示進(jìn)程的資源類型, 當(dāng)使用完畢之后,請(qǐng)調(diào)用 proc_close() 函數(shù)來(lái)關(guān)閉此資源。 如果失敗,返回 FALSE。 * cmd 要執(zhí)行的命令 * descriptorspec 一個(gè)索引數(shù)組。 * 數(shù)組的鍵表示描述符, 0 表示標(biāo)準(zhǔn)輸入(stdin),1 表示標(biāo)準(zhǔn)輸出(stdout),2 表示標(biāo)準(zhǔn)錯(cuò)誤(stderr) * 數(shù)組元素值表示 PHP 如何將這些描述符傳送至子進(jìn)程。 * pipe (第二個(gè)元素可以是: r 向進(jìn)程傳送該管道的讀取端,w 向進(jìn)程傳送該管道的寫入端), * 以及 file(第二個(gè)元素為文件名)。 * pipes * 將被置為索引數(shù)組, 其中的元素是被執(zhí)行程序創(chuàng)建的管道對(duì)應(yīng)到 PHP 這一端的文件指針。 * cwd * 要執(zhí)行命令的初始工作目錄。 必須是 絕對(duì) 路徑, 設(shè)置此參數(shù)為 NULL 表示使用默認(rèn)值(當(dāng)前 PHP 進(jìn)程的工作目錄) * env * 要執(zhí)行的命令所使用的環(huán)境變量。 設(shè)置此參數(shù)為 NULL 表示使用和當(dāng)前 PHP 進(jìn)程相同的環(huán)境變量。 * * */ $proc = proc_open($cmd, $descriptorspec, $pipes, $cwd, null); // $proc為false,表明命令執(zhí)行失敗 if ($proc == false) { return false; // do sth with HTTP response } else { $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); $status = proc_close($proc); // 釋放proc } $data = array( 'stdout' => $stdout, 'stderr' => $stderr, 'retval' => $status ); return $data; }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。