關於shell exec的用法

2021-08-21 00:09:22 字數 1157 閱讀 5568

1樓:匿名使用者

exec()是用於執行shell命令的函式。它返回執行並返回命令輸出的最後一行,但你可以指定乙個陣列作為第二個引數,這樣輸出的每一行都會作為乙個元素存入陣列。使用方式如下:

1.**如下:

<?php

$last = exec('ls', $output, $return);

print_r($output);

echo "return [$return]";

?>

2.假設ls命令在shell中手工執行時會產生如下輸出:

**如下:

$ ls

total 0

-rw-rw-r-- 1 chris chris 0 may 21 12:34 php-security

-rw-rw-r-- 1 chris chris 0 may 21 12:34 chris-shiflett

3.當通過上例的方法在exec()中執行時,輸出結果如下:

**如下:

array

([0] => total 0

[1] => -rw-rw-r-- 1 chris chris 0 may 21 12:34 php-security

[2] => -rw-rw-r-- 1 chris chris 0 may 21 12:34 chris-shiflett

)return [0]

這種執行shell命令的方法方便而有用,但這種方便為你帶來了重大的風險。如果使用了被汙染資料構造命令串的話,攻擊者就能執行任意的命令。

我建議你有可能的話,要避免使用shell命令,如果實在要用的話,就要確保對構造命令串的資料進行過濾,同時必須要對輸出進行轉義:

4.**如下:

<?php

$clean = array();

$shell = array();

/* filter input ($command, $argument) */

$shell['command'] = escapeshellcmd($clean['command']);

$shell['argument'] = escapeshellarg($clean['argument']);

$last = exec(" ", $output, $return);

?>

關於C語言 用法的基礎問題,關於C語言 用法的乙個基礎問題

c s i 就是c s i 加1。s i 是小於5的數,作為c的乙個下標。自增運算子 使運算元的值加1,其運算元必須為可變左值 可簡單地理解為變數 問題在於 可以置於運算元前面,也可以放在後面,如 i i i表示,i自增1後再參與其它運算 而i 則是i參與運算後,i的值再自增1。告訴你自增自減的規律...

關於besides的用法

besides 是包含的意思,包含英語,總共35種 excpet是除去的意思。如果用excetp就是36種 其實很好理解啦,從上面的other就可以看出是36種了,english 35other 36 besides 是包括在裡面的,除了xx之外,這裡的除是包含的意思,except 是剔除的意思,不...

關於日語中的用法日語中的用法

從您的問題來看應該是乙個初學者吧,這句話是教材中的課文,簡單給你解釋一下。美術館 作品 這句話中,首先是該課的句型 名 地點 名 物 表示的是某地有某物,但是為什麼是 呢?首先書上的後面有解釋,他是乙個助詞的連用,但事實上我們可以更簡單的了解。首現,在這裡的確有對比的含義,是指提問者有詢問和其他的美...