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