區(qū)別:system()函數(shù)可以輸出和返回結(jié)果;第二個參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼。exec()不輸出結(jié)果,而是返回結(jié)果的最后一行;雖然它只返回命令結(jié)果的最后一行,但用第二個參數(shù)array可以得到完整的結(jié)果。
安順網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)建站公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
在PHP中調(diào)用外部命令,可以用exec 及 system來實現(xiàn)。那么它們之間有什么差異,下面本篇文章給大家介紹一下php中system和exec的區(qū)別。
一、exec ---執(zhí)行外部程序
string exec ( string $command [, array &$output [, int &$return_var ]] )
$command:要執(zhí)行的shell 命令
$output:shell命令的輸出填充此數(shù)組,每行輸出填充數(shù)組中的一個元素。 請注意,如果數(shù)組中已經(jīng)包含了部分元素,exec() 函數(shù)會在數(shù)組末尾追加內(nèi)容。如果你不想在數(shù)組末尾進(jìn)行追加,請在傳入 exec() 函數(shù)之前 對數(shù)組使用 unset() 函數(shù)進(jìn)行重置。
$return_var 命令執(zhí)行后的返回狀態(tài),命令執(zhí)行成功值是0
返回值:shell命令輸出的最后一行
ps: 2>&1 exec不成功,調(diào)試方案一個技巧就是使用管道命令, 使用 2>&1, 命令就會輸出shell執(zhí)行時的錯誤到$output變量, 輸出該變量即可分析。
例子1
(1)代碼所在的index.php 文件的結(jié)構(gòu)
(2)代碼
$out = [34]; $res = exec('ls 2>&1',$out,$return_status); var_dump($res); echo '------'; var_dump($out); echo '------'; var_dump($return_status);
(3)執(zhí)行結(jié)果
zhangxueqing:demo playcrab$ php ./1/index.php /Users/playcrab/www/demo/1/index.php:10: string(11) "webuploader" ------/Users/playcrab/www/demo/1/index.php:12: array(10) { [0] => int(34) [1] => string(1) "1" [2] => string(6) "1.html" [3] => string(5) "1.php" [4] => string(10) "client.php" [5] => string(14) "design-pattern" [6] => string(3) "img" [7] => string(17) "jquery.blockUI.js" [8] => string(10) "static.php" [9] => string(11) "webuploader" } ------/Users/playcrab/www/demo/1/index.php:14: int(0)
二、system ---執(zhí)行外部程序,并且顯示輸出
string system ( string $command [, int &$return_var ] )
$command 要執(zhí)行的命令
$return_var 命令執(zhí)行后的返回狀態(tài),值是0表示成功
返回結(jié)果:
成功返回0,
失敗(命令不存在等原因) 返回 非0值
1.示例代碼
$res = system('ls 2>&1',$return_status);var_dump($res);echo '------';var_dump($return_status);
2.輸出結(jié)果
總結(jié):
system()函數(shù)很其它語言中的差不多,它執(zhí)行給定的命令,輸出和返回結(jié)果。第二個參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼
exec ()函數(shù)與system()類似,也執(zhí)行給定的命令,但不輸出結(jié)果,而是返回結(jié)果的最后一行。雖然它只返回命令結(jié)果的最后一行,但用第二個參數(shù)array 可以得到完整的結(jié)果,方法是把結(jié)果逐行追加到array的結(jié)尾處。所以如果array不是空的,在調(diào)用之前最好用unset()最它清掉。只有指定了第二 個參數(shù)時,才可以用第三個參數(shù),用來取得命令執(zhí)行的狀態(tài)碼。
推薦:《PHP視頻教程》
本文題目:php中system和exec的區(qū)別是什么?
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article4/chsdoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、虛擬主機、移動網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、企業(yè)建站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)