zoukankan      html  css  js  c++  java
  • php脚本运行shell命令

    了解python的朋友都知道,python的os模块中system()方法可以执行shell命令行,因此执行与操作系统相关的内容;

    而php中,同样存在这样的函数:system(),exec(),passthru()

    system — 执行外部程序,并且显示输出

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

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

    如果要获取一个命令未经任何处理的 原始输出, 请使用 passthru() 函数。

    command

    要执行的命令。

    return_var

    如果提供 return_var 参数, 则外部命令执行后的返回状态将会被设置到此变量中。

    <?php
    echo '<pre>';

    // 输出 shell 命令 "ls" 的返回结果
    // 并且将输出的最后一样内容返回到 $last_line。
    // 将命令的返回值保存到 $retval。
    $last_line = system('ls', $retval);

    // 打印更多信息
    echo '
    </pre>
    <hr />Last line of the output: ' . $last_line . '
    <hr />Return value: ' . $retval;
    ?>

    提醒:在php.ini配置中safe_mode=on时,需要特别注意

    safe_mode =  (这个如果为off下面两个就不用管了)
    disable_functions = 
    safe_mode_exec_dir=

    将需要执行的脚本放置到safe_mode_exec_dir指定的路径下

    exec()
     
    原型:string exec (string command [, string array [, int return_var]])
     
    exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。

    exec("/bin/ls -l");
    exec("/bin/ls -l", $res);
    #$res是一个数据,每个元素代表结果的一行
    exec("/bin/ls -l", $res, $rc);
    #$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0

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

    同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。

    以上希望对您有帮助,其实也是我自己温故的pool;

  • 相关阅读:
    原生小程序 自定义封装组件
    H5 es6 foreach使用
    原生小程序底部弹出层动画过渡
    vue 动画滑动
    H5 textarea高度自适应
    关于Java日期加减,并且比较大小的方法
    activiti多实例如何配置
    常用类——Date——Calendar
    常用类-String
    Wrapper-装箱和拆箱
  • 原文地址:https://www.cnblogs.com/zhirusi/p/8149166.html
Copyright © 2011-2022 走看看