• shell脚本--php执行普通shell命令


      这里只演示一些普通的shell命令,一些需要root用户权限执行的命令,请参考:php以root权限执行shell命令

      php执行shell命令,可以使用下面几个函数:

    string system ( string $command [, int &$return_var ] )
    string exec ( string $command [, array &$output [, int &$return_var ]] )
    void passthru ( string $command [, int &$return_var ] )
    

      注意的是:这三个函数在默认的情况下,都是被禁止了的,如果要使用这几个函数,就要先修改php的配置文件php.ini,查找关键字disable_functions,将这一项中的这几个函数名删除掉,然后注意重启apache。

      首先看一下system()和passthru()两个功能类似,可以互换:

    <?php
        $shell = "ls -la";
        echo "<pre>";
        system($shell, $status);
        echo "</pre>";
        //注意shell命令的执行结果和执行返回的状态值的对应关系
        $shell = "<font color='red'>$shell</font>";
        if( $status ){
            echo "shell命令{$shell}执行失败";
        } else {
            echo "shell命令{$shell}成功执行";
        }
    ?>

      执行结果如下:

      

      注意,system()会将shell命令执行之后,立马显示结果,这一点会比较不方便,因为我们有时候不需要结果立马输出,甚至不需要输出,于是可以用到exec()

      

      exec()的使用示例: 

    <?php
        $shell = "ls -la";
        exec($shell, $result, $status);
        $shell = "<font color='red'>$shell</font>";
        echo "<pre>";
        if( $status ){
            echo "shell命令{$shell}执行失败";
        } else {
            echo "shell命令{$shell}成功执行, 结果如下<hr>";
            print_r( $result );
        }
        echo "</pre>";
    ?>
    

      运行结果如下:

     

      

  • 相关阅读:
    【职业规划】一位资深程序员大牛给予Java初学者的学习路线建议
    一个断点调试的小技巧
    无穷分数
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    理解Servlet和Servlet容器、Web服务器等概念
    图解红黑树及Java进行红黑二叉树遍历的方法
    Majority Element
    Factorial Trailing Zeroes
    Valid Parentheses
    House Robber
  • 原文地址:https://www.cnblogs.com/-beyond/p/8570654.html
Copyright © 2020-2023  润新知