溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php 執(zhí)行shell命令 打印錯(cuò)誤信息

發(fā)布時(shí)間:2020-06-21 22:04:02 來(lái)源:網(wǎng)絡(luò) 閱讀:6113 作者:wz669 欄目:web開發(fā)
$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;
}


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI