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

    参考地址:

  • 相关阅读:
    from import 的认识
    模块初识
    eq方法
    hash介绍
    item系列
    析构函数
    serializers进阶
    APIView源码解析
    RPC协议
    面试题补充
  • 原文地址:https://www.cnblogs.com/wanghaokun/p/12366151.html
Copyright © 2020-2023  润新知