溫馨提示×

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

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

如何在php中使用system函數(shù)調(diào)用系統(tǒng)命令

發(fā)布時(shí)間:2021-03-10 14:15:54 來源:億速云 閱讀:992 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章給大家介紹如何在php中使用system函數(shù)調(diào)用系統(tǒng)命令,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

exec --- 執(zhí)行外部程式

  語法 : string exec ( string command [, array &output [, int &return_var]] )

  說明 :

  exec( )執(zhí)行給予的命令command,不過它并不會(huì)輸出任何東西,它簡單的從命令的結(jié)果中傳回最后一行,如果你需要去執(zhí)行一個(gè)命令,并且從命令去取得所有資料時(shí),可以使用passthru( )這個(gè)函數(shù)。

  如果有給予參數(shù)array,則指定的數(shù)組將會(huì)被命令所輸出的每一行填滿,注意 : 如果數(shù)組先前已經(jīng)包含了一些元素的話,exec( )將會(huì)把它附加在數(shù)組的后面,如果你不想要此函數(shù)附加元素的話,你可以在傳遞此數(shù)組給exec( )之前呼叫unset( )。

  如果有給予參數(shù)array和return_var,則傳回執(zhí)行的狀態(tài)命令將會(huì)寫到這個(gè)變量。

  注意 : 如果你允許來自使用者輸入的資料,可以傳遞到此函數(shù),那么你應(yīng)該使用escapeshellcmd( )來確定此使用者無法哄騙(trick)系統(tǒng)來執(zhí)行武斷的(arbitrary)命令。

  注意 : 如果你使用此函數(shù)來啟動(dòng)一個(gè)程式,而且希望在背景里(background)執(zhí)行的時(shí)候離開它,你必須確定此程式的輸出是轉(zhuǎn)向(redirected)到一個(gè)文件或是一些輸出的資料流,否則PHP將會(huì)懸掛(hang)直到程式執(zhí)行結(jié)束。

  system --- 執(zhí)行外部程式并且顯示輸出

  語法 : string system ( string command [, int &return_var] )

  說明 :

  system( )執(zhí)行給予的命令command,并且輸出結(jié)果。如果有給予參數(shù)return_var,則執(zhí)行命令的狀態(tài)碼將會(huì)寫到這個(gè)變量。

  注意 : 如果你允許來自使用者輸入的資料,可以傳遞到此函數(shù),那么你應(yīng)該使用escapeshellcmd( )來確定此使用者無法哄騙(trick)系統(tǒng)來執(zhí)行武斷的(arbitrary)命令。

  注意 : 如果你使用此函數(shù)來啟動(dòng)一個(gè)程式,而且希望在背景里(background)執(zhí)行的時(shí)候離開它,你必須確定此程式的輸出是轉(zhuǎn)向(redirected)到一個(gè)文件或是一些輸出的資料流,否則PHP將會(huì)懸掛(hang)直到程式執(zhí)行結(jié)束。

  如果PHP是運(yùn)作成伺服器模組,在輸出每一行后,system( )會(huì)試著自動(dòng)地清除web伺服器的輸出緩沖。

  成功則傳回命令的最后一行,失敗則傳回false。

  如果你需要去執(zhí)行一個(gè)命令,并且從命令去取得所有資料時(shí),可以使用passthru( )這個(gè)函數(shù)。

  這二個(gè)都是用來調(diào)用系統(tǒng)shell命令,

  不同點(diǎn):

  exec可以把執(zhí)行的結(jié)果全部返回到$output函數(shù)里(數(shù)組),$status是執(zhí)行的狀態(tài) 0為成功 1為失敗

  systerm不需要提供$output函數(shù),他是直接把結(jié)果返回出來,同樣$return_var是執(zhí)行的狀態(tài)碼 0為成功 1為失敗

exec示例:

復(fù)制代碼 代碼如下:


<?php
$a = exec("dir",$out,$status);
print_r($a);
print_r($out);
print_r($status);
?>


system示例:

復(fù)制代碼 代碼如下:


<?php
$a = system("dir",$out);
print_r($a);
print_r($out);
?>


system、exce、passthru區(qū)別
system() 輸出并返回最后一行shell結(jié)果。
exec() 不輸出結(jié)果,返回最后一行shell結(jié)果,所有結(jié)果可以保存到一個(gè)返回的數(shù)組里面。
passthru() 只調(diào)用命令,把命令的運(yùn)行結(jié)果原樣地直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。
相同點(diǎn):都可以獲得命令執(zhí)行的狀態(tài)碼

關(guān)于如何在php中使用system函數(shù)調(diào)用系統(tǒng)命令就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI