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

时间:2020-02-26 12:45:28   收藏:0   阅读:86

具体区别如下:

$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中看是否能够正常执行。如果可以,将电脑重启后,再试试。

 

 

参考地址:

https://www.cnblogs.com/acetaohai123/p/6571414.html

 

原文:https://www.cnblogs.com/wanghaokun/p/12366151.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!