国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP中exec與shell_exec函數區別

2024-09-04 11:48:48
字體:
來源:轉載
供稿:網友

這兩個函數都是執行Linux命令函數,不同的是獲取返回結果不一樣,exec只能獲取最后一行數據,shell_execu則可以獲取全部數據.

假如腳本路徑下有如下文件:

-bash-4.1# ll 

總用量 12

-rw-rw-r--. 1 www web 133  7月 16 15:00 a.php

-rw-r--r--. 1 lee web  59  2月 29 17:05 b.php

-rw-r--r--. 1 lee web  81  3月  8 17:00 c.php

先看一下php手冊對這二個函數的解釋:

exec --- 執行外部程式

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

說明:exec( )執行給予的命令command,不過它并不會輸出任何東西,它簡單的從命令的結果中傳回最后一行,如果你需要去執行一個命令,并且從命令去取得所有資料時,可以使用passthru( )這個函數.

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

exec例子,代碼如下:

  1. <?php  
  2. /**  
  3.  * exec與shell_exec的區別  
  4.  * 瓊臺博客 Vevb.com 
  5.  */ 
  6. $data = exec('/bin/ls -l');  
  7. echo '<pre>';  
  8. print_r($data);  
  9. echo '</pre>';  
  10. ?> 
  11. //執行結果 
  12. -rw-r--r--. 1 lee web  81 Mar  8 17:00 c.phpshell_exec例子 
  13. shell_exec() 

shell_exec() 命令行實際上僅是反撇號 (`) 操作符的變體,如果您編寫過 shell 或 Perl 腳本,您就知道可以在反撇號操作符內部捕捉其他命令的輸出,例如,清單 1 顯示了如何使用反撇號在當前目錄中獲取每個文本(.txt)的單詞計數.

在 shell_exec()中運行相同的命令,代碼如下:

  1. <?php 
  2.  
  3. $results 
  4. =  
  5. shell_exec 
  6. wc -w *.txt 
  7. echo 
  8. $results 
  9. ?> 

獲得的結果與從 shell 腳本得到的一樣.

exec與shell_exec的區別,代碼如下:

  1. <?php  
  2. /**  
  3.  *   
  4.  * 瓊臺博客  
  5.  */ 
  6. $data = shell_exec('/bin/ls -l');  
  7. echo '<pre>';  
  8. print_r($data);  
  9. echo '</pre>';  
  10. ?> 
  11. //執行結果 
  12.  total 12 
  13. -rw-rw-r--. 1 www web 139 Jul 16  2012 a.php 
  14. -rw-r--r--. 1 lee web  59 Feb 29 17:05 b.php 
  15. -rw-r--r--. 1 lee web  81 Mar  8 17:00 c.php 

所以平時使用exec函數的童鞋注意了,如果你需要獲取全部返回信息,就應該使用shell_exec函數,當然,如果命令執行結果只有一行返回信息,那么使用哪個都無所謂.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘山县| 宿州市| 通渭县| 沁源县| 东城区| 渝北区| 福泉市| 全南县| 青田县| 沽源县| 保德县| 广安市| 广宗县| 黑河市| 武汉市| 肥城市| 南涧| 洮南市| 虎林市| 巴中市| 芜湖市| 梁河县| 开封县| 玉龙| 永平县| 固安县| 鄂托克旗| 曲麻莱县| 自治县| 宣化县| 庆云县| 凉山| 池州市| 阳西县| 恭城| 故城县| 齐齐哈尔市| 桂阳县| 凉城县| 平阳县| 武隆县|