PHP提供了4種方法執行系統外部命令:exec()、passthru()、system()、shell_exec(),下面分別介紹:
1、exec
原型:string exec ( string $command [, array &$output [, int &$return_var ]] )
exec執行command命令,但是不會輸出全部結果,而是返回結果的最后一行,如果你想得到全部的結果,可以使用第二個參數,讓其輸出到一個數組,數組的每一個記錄代表了輸出的每一行,如果輸出結果有10行,則數組就有10條記錄。所以如果你需要反復輸出調用不同系統外部命令的結果,你最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。舉例:
- <?php
- exec('ls /home/xyw/test');
- ?>
沒有輸出。
- <?php
- exec('ls /home/xyw/test',$arr);
- print_r($arr);
- ?>
輸出:
- Array
- (
- [0] => list.txt
- [1] => list.txt.ln
- [2] => tcpdump中文手冊.doc
- [3] => test1
- [4] => 北郵校徽.jpg
- [5] => 浪潮之巔.pdf
- )
2、passthru
原型:void passthru ( string $command [, int &$return_var ] )
與exec的區別:passthru直接將結果輸出,不返回結果,不用使用echo查看結果。
- <?php
- passthru("ls test");
- ?>
結果:
- list.txt
- list.txt.ln
- tcpdump中文手冊.doc
- test1
- 北郵校徽.jpg
- 浪潮之巔.pdf
3、system
原型:string system ( string $command [, int &$return_var ] )
與passthru的基本相同,但是system返回結果並且輸出。(查看system和pssthru的返回值可以看出)
4、shell_exec
是反撇號 (`) 操作符的變體.
- <?php
- echo `pwd`;
- ?>