zoukankan      html  css  js  c++  java
  • php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比

    PHP提供了4种方法执行系统外部命令:exec()、passthru()、system()、shell_exec(),下面分别介绍:

    1、exec

    原型:string exec ( string $command [, array &$output [, int &$return_var ]] )

    exec执行command命令,但是不会输出全部结果,而是返回结果的最后一行,如果你想得到全部的结果,可以使用第二个参数,让其输出到一个数组,数组的每一个记录代表了输出的每一行,如果输出结果有10行,则数组就有10条记录。所以如果你需要反复输出调用不同系统外部命令的结果,你最好在输出每一条系统外部命令结果时清空这个数组,以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。举例:

    [php] view plain copy
     
    1. <?php  
    2. exec('ls /home/xyw/test');  
    3. ?>  

    没有输出。

    [php] view plain copy
     
    1. <?php  
    2. exec('ls /home/xyw/test',$arr);  
    3. print_r($arr);  
    4. ?>  

    输出:

    [plain] view plain copy
     
    1. Array  
    2. (  
    3.     [0] => list.txt  
    4.     [1] => list.txt.ln  
    5.     [2] => tcpdump中文手册.doc  
    6.     [3] => test1  
    7.     [4] => 北邮校徽.jpg  
    8.     [5] => 浪潮之巅.pdf  
    9. )  

    2、passthru

    原型:void passthru ( string $command [, int &$return_var ] )

    与exec的区别:passthru直接将结果输出,不返回结果,不用使用echo查看结果。

    [php] view plain copy
     
    1. <?php  
    2. passthru("ls test");  
    3. ?>  

    结果:

    [plain] view plain copy
     
    1. list.txt  
    2. list.txt.ln  
    3. tcpdump中文手册.doc  
    4. test1  
    5. 北邮校徽.jpg  
    6. 浪潮之巅.pdf  

    3、system

    原型:string system ( string $command [, int &$return_var ] )

    与passthru的基本相同,但是system返回结果并且输出。(查看system和pssthru的返回值可以看出)

    4、shell_exec

    是反撇号 (`) 操作符的变体.

    [plain] view plain copy
     
    1. <?php  
    2.     echo `pwd`;  
    3. ?>  
  • 相关阅读:
    Linux下Keepalived 安装与配置
    Nginx配置SSL证书部署HTTPS网站
    Nginx 实现MySQL的负载均衡
    iOS如何把导航默认的返回按钮设置成“返回”
    Java中JSON的简单使用与前端解析
    双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
    iOS开发--使用RSA加密
    UIBezierPath画圆弧的记录
    SSL构建单双向https认证
    webpack配置上线地址
  • 原文地址:https://www.cnblogs.com/microtiger/p/7894530.html
Copyright © 2011-2022 走看看