PHP执行外部命令总结(exec、system、passthru、shell_exec)

具体区别如下:

$command = 'whoami';

//不直接输入结果内容,命令执行结果的最后一行内容,第二个参数可获取到所有返回结果,每行结果作为一个数组记录,第三个参数返回命令执行的状态码,0代表成功1失败
$resultData =exec($command,$output,$returnVal);

//直接将结果输出到浏览器,成功则返回命令输出的最后一行, 失败则返回 FALSE,第二个参数返回命令执行的状态码,0代表成功1失败
$resultData = system($command,$returnVal);

//直接将结果输出到浏览器,没有返回值,且可输出二进制,比如图片数据。第二个参数返回命令执行状态码,0代表成功1失败
$resultData = passthru($command,$returnVal);

//命令执行的输出。 如果执行过程中发生错误或者进程不产生输出,则返回 NULL。
$resultData = shell_exec($command);

 一般用exec()会比较多,有返回值和状态码,shell_exec()仅有返回值,没有状态码返回

system()和passthru()都会直接将结果输出到浏览器,若是用户图像二进制输出时,passthru()更符合要求,且配合header,eg:header("Content-type:image/gif"); 可直接将图像输出。

 

问题解决:

Q:exec, system, passthru, shell_exec 在windows中不生效问题

A:确定是否是用户权限问题,将同样命令在cmd中看是否能够正常执行。如果可以,将电脑重启后,再试试。

 

 

参考地址:

 

posted on 2020-02-26 12:06  爱吃柠檬不加糖  阅读(654)  评论(0编辑  收藏  举报

导航