PHP系统命令执行函数汇总

 

过滤参数

escapeshellarg

过滤一个字符串参数,原理是给字符串添加单引号,而shell不会解释单引号中的特殊字符。如果字符串中已经有单引号了,那么该函数会分段处理这个字符串,对字符串中的单引号做转义,并以之分段,也就是这种形式’…’\”…’。也可以说,单引号是就近匹配的。这个函数应该用来过滤单个的shell函数的参数。

escapeshellcmd

该函数应该被用来过滤整个命令字符串(而不是单个参数),转义shell元字符。


执行系统命令

反引号运算符

PHP支持一个执行运算符:反引号``。PHP将尝试将反引号中的内容作为外壳命令执行,并将其输出信息作为返回值返回(即可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符的效果与函数shell_exec()相同。 
反引号运算符在激活了安全模式或者关闭了shell_exec()时是无效的。

exec

string exec ( string $command [, array &$output [, int &$return_var ]] ) 
如果output参数出现的话,该函数会将命令执行的结果一行一行的存入output指定的数组,一行对应数组的一个元素,结尾的空白字符会被省略。注意,如果output已经包含有内容的话,该函数会在这些内容后面追加内容,如果你不想这样,你必须在调用该函数之前,在output上调用unset()。 
return_var保存命令的执行状态。 
该函数返回命令输出的最后一行。

system

输出执行结果,返回最后一行。 
如果PHP运行在服务器模块中,system()函数还会尝试在每行输出完毕之后,自动刷新web服务器的输出缓存。

passthru

执行外部程序并且显示原始输出。同exec()函数类似,passthru()函数也是用来执行外部命令的。当所执行的Unix命令输出二进制数据,并且需要直接传送到浏览器的时候,需要用此函数来替代exec()system()函数。常用来执行诸如pbmplus之类的可以直接输出图像流的命令。

shell_exec

通过shell环境执行命令,并且将完整的输出以字符串的方式返回。该函数会在错误出现或者程序执行没有输出两种情况下返回NULL,也就是说,没有办法通过该函数检测程序执行失败(可以改用exec)。

posted @ 2016-02-15 14:18  sycamore tree  阅读(1946)  评论(0编辑  收藏  举报