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

首頁 > 編程 > PHP > 正文

PHP系統程序執行函數(system,passthru,exec)簡單分析(附代碼)

2020-03-22 17:52:15
字體:
來源:轉載
供稿:網友
首頁 > html' target='_blank'>php教程 > php教程 > 正文 PHP系統程序執行函數(system,passthru,exec)簡單分析(附代碼) 2018-08-03 11:43:32 第六期線上培訓班
這篇文章給大家介紹的內容是關于PHP系統程序執行函數(system,passthru,exec)簡單分析(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

exec — 執行一個外部程序

string exec ( string $command [, array $output [, int $return_var ]] )

范例

 ?php echo exec( ls ,$output); echo /br  print_r($file);? 

執行結果:

test.php
Array( [0] = index.php [1] = test.php)

分析:
exec 不會主動返回執行結果,且只是返回結果的最后一行;
想要獲得完整的結果,需要第二個參數,讓其輸出到指定的數組,此數組一個記錄代表輸出的一行,而且反復執行不同的系統外部命令時,在輸出每一條系統外部命令結果時清理unset()這數組,以防混亂;
第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。

passthru — 執行外部程序并且顯示原始輸出

void passthru ( string $command [, int $return_var ] )

范例

 ?php passthru( ls ? 

執行結果:

index.phptest.php

分析:
同 exec() 函數類似,也是用來執行外部命令,但直接將結果輸出到瀏覽器(未經任何處理的 原始輸出),沒有返回值;
當需要輸出二進制數據,并且需要直接傳送到瀏覽器的時候,來使用這函數,如:直接輸出圖像流的命令;

system — 執行外部程序,并且顯示輸出

string system ( string $command [, int $return_var ] )

 ?php system( ls , $retval);? 

分析:
直接將結果輸出到瀏覽器;
第二個參數是外部命令執行后的返回狀態;
成功則返回命令輸出的最后一行,失敗則返回 FALSE;
如果 PHP 運行在服務器模塊中,system() 函數還會嘗試在每行輸出完畢之后, 自動刷新 web 服務器的輸出緩存。

shell_exec — 通過 shell 環境執行命令,并且將完整的輸出以字符串的方式返回。

說明
string shell_exec ( string $cmd )
反引號運算符“`”的效果與函數 shell_exec() 相同。
shell_exec 的返回值
當進程執行過程中發生錯誤,或者進程不產生輸出的情況下,都會返回 NULL, 所以,使用本函數無法通過返回值檢測進程是否成功執行。 如果需要檢查進程執行的退出碼,請使用 exec() 函數。

范例

 ?php$output = `ls -al`;echo pre $output /pre ? 

注意:
反引號運算符在激活了安全模式或者關閉了 shell_exec() 時是無效的。
與其它某些語言不同,反引號不能在雙引號字符串中使用。

Example #1 shell_exec() 例程
當 PHP 運行在 安全模式 時,不能使用此函數。

 ?php$output = shell_exec( ls -lart echo pre $output /pre ? 

escapeshellarg
說明
string escapeshellarg ( string $arg )
escapeshellarg() 將給字符串增加一個單引號并且能引用或者轉碼任何已經存在的單引號,這樣以確保能夠直接將一個字符串傳入 shell 函數,并且還是確保安全的。對于用戶輸入的部分參數就應該使用這個函數。shell 函數包含 exec(), system() 執行運算符 。

參數
arg
需要被轉碼的參數。

返回值
轉換之后字符串。

范例

 ?phpsystem( ls .escapeshellarg($dir));? 

escapeshellcmd
說明
string escapeshellcmd ( string $command )
escapeshellcmd() 對字符串中可能會欺騙 shell 命令執行任意命令的字符進行轉義。 此函數保證用戶輸入的數據在傳送到 exec() 或 system() 函數,或者 執行操作符 之前進行轉義。

反斜線(/)會在以下字符之前插入: `|*?~ ^()[]{}$/, /x0A 和 /xFF。 和 僅在不配對兒的時候被轉義。 在 Windows 平臺上,所有這些字符以及 % 和 ! 字符都會被空格代替。
參數
command
要轉義的命令。

返回值
轉義后的字符串。

范例

 ?php// 我們故意允許任意數量的參數$command = ./configure .$_POST[ configure_options $escaped_command = escapeshellcmd($command);system($escaped_command);? 

Warning
escapeshellcmd() 應被用在完整的命令字符串上。 即使如此,攻擊者還是可以傳入任意數量的參數。 請使用 escapeshellarg() 函數 對單個參數進行轉義。

相關文章推薦:

php中_get方法和_set方法訪問方法的實例代碼

php實現操作文件的各種方式總結(附代碼)

以上就是PHP系統程序執行函數(system,passthru,exec)簡單分析(附代碼)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺昌县| 余庆县| 霍邱县| 罗定市| 闽侯县| 丰镇市| 仙居县| 淅川县| 奉新县| 西和县| 彭泽县| 库尔勒市| 长阳| 长春市| 万载县| 乳山市| 陆川县| 福贡县| 大竹县| 定安县| 衡水市| 二手房| 西和县| 淳安县| 陆良县| 垦利县| 若羌县| 高安市| 峨眉山市| 闸北区| 潮州市| 应用必备| 湟中县| 玉龙| 皮山县| 乌兰浩特市| 浦北县| 尉犁县| 沾化县| 伊金霍洛旗| 深泽县|