永发信息网

关于shell_exec的用法

答案:2  悬赏:60  手机版
解决时间 2021-02-24 15:14
关于shell_exec的用法
最佳答案
exec()是用于执行shell命令的函数。它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组。使用方式如下:

1.代码如下:
$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.代码如下:

$clean = array();
$shell = array();

$shell['command'] = escapeshellcmd($clean['command']);
$shell['argument'] = escapeshellarg($clean['argument']);
$last = exec("{$shell['command']} {$shell['argument']}", $output, $return);
?>
全部回答
没有看到报错内容, 最好是可以发过来看看?
私信?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
唐洪中心幼儿园在什么地方啊,我要过去处理事
吴京新电影叫什么
乌木山这个地址在什么地方,我要处理点事
灭火器的压力是多少
我和39岁的情人在一起一天可以爱爱6次.这样正
极品飞车9可不可以自己往上添加音乐
【傅雷家书摘抄】傅雷家书的摘抄与赏析.摘抄
金贝山纸行这个地址在什么地方,我要处理点事
美国总统在就职时为什么要手扶圣经宣誓
古董到底是有多值钱那?
中和街/永昌北路(路口)在哪里啊,我有事要去
从江西萍乡到湖北襄樊枣阳,大约有多少公里,
村干坪地址有知道的么?有点事想过去
聊城到宁波快递运费多少
宜缘饭店怎么去啊,有知道地址的么
推荐资讯
益民伟业广告装饰有限公司地址在什么地方,想
笔记本双显卡有什么用
【一根能承受最大拉力为528N的绳索悬于窗口,
六公顷还是5900平方米?
设计内容不全、设计缺陷、错误和遗漏属于技术
交通运输部2016年修改涉及道路运输的部令有哪
豌豆笑传和阿衰哪个更好看
下图四个风向箭头中正确表示北半球西风带风向
怎样用醋去掉头皮屑? 5分
长城光纤好垃圾,一会快一会慢。。。还是100M
在夏至这天,假设温度相同而且都是晴天,则同
万象路/津歧线(路口)我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?