關於shell exec的用法

時間 2021-08-30 09:49:17

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);

?>

關於as的用法,關於be in的用法

一 關於besurprisedin at to的用法 1 沒有besurprisedin這種用法,surprised不和in搭配,可以和to,at搭配。2 be surprised at用法 1 be surprised at somebody表示對某人的行為感到驚訝。例句 i am surpris...

的語法用法,關於 的用法

豬啊豬的 040 否 名詞 否 動詞 形容詞 普通形 形 否 會話 良子 人 成功 否 何 決 思 李 才能 努力 駄目 人 運 良子 玉磨 光 言 努力 成功 得 思 解說 否 文語表現 口語 同義 例文5 否 如何 形 使 決 意味 合格 否 努力 否 例文 1 事実 調查 必要 2 賛成 否 ...

關於but的用法,BUT的一切用法

不是連詞,可以作為副詞來理解。but在這裡只是用來表示一下停頓,不一定非要翻譯成但是的意思 關於第二種情況,那要看but具體表示什麼意思了,如果表示但是的話,當然要前後一致,但是如果表示 而不是 可以不統一,當然這也只是形式上的不統一,比如 he is a teacher but a doctor。...