php中system和exec的區(qū)別是什么?

區(qū)別:system()函數(shù)可以輸出和返回結果;第二個參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼。exec()不輸出結果,而是返回結果的最后一行;雖然它只返回命令結果的最后一行,但用第二個參數(shù)array可以得到完整的結果。

安順網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)建站。

在PHP中調用外部命令,可以用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ù)組末尾追加內容。如果你不想在數(shù)組末尾進行追加,請在傳入 exec() 函數(shù)之前 對數(shù)組使用 unset() 函數(shù)進行重置。

$return_var 命令執(zhí)行后的返回狀態(tài),命令執(zhí)行成功值是0

返回值:shell命令輸出的最后一行

ps: 2>&1 exec不成功,調試方案一個技巧就是使用管道命令, 使用 2>&1, 命令就會輸出shell執(zhí)行時的錯誤到$output變量, 輸出該變量即可分析。

例子1

(1)代碼所在的index.php 文件的結構

(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í)行結果

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表示成功

返回結果:

成功返回0,

失敗(命令不存在等原因) 返回 非0值

1.示例代碼

$res = system('ls 2>&1',$return_status);var_dump($res);echo '------';var_dump($return_status);

2.輸出結果

總結:

system()函數(shù)很其它語言中的差不多,它執(zhí)行給定的命令,輸出和返回結果。第二個參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼

exec ()函數(shù)與system()類似,也執(zhí)行給定的命令,但不輸出結果,而是返回結果的最后一行。雖然它只返回命令結果的最后一行,但用第二個參數(shù)array 可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在調用之前最好用unset()最它清掉。只有指定了第二 個參數(shù)時,才可以用第三個參數(shù),用來取得命令執(zhí)行的狀態(tài)碼。

推薦:《PHP視頻教程》

本文題目:php中system和exec的區(qū)別是什么?
網(wǎng)頁網(wǎng)址:http://muchs.cn/article4/chsdoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、虛擬主機移動網(wǎng)站建設網(wǎng)站內鏈、企業(yè)建站網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司