• php执行普通shell命令


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

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

    1
    2
    3
    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()两个功能类似,可以互换:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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()的使用示例: 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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>";
    ?>

      运行结果如下:

     

      

    如需转载,请注明文章出处,谢谢!!!
  • 相关阅读:
    Windows 网络监测ping IP输出时间
    python
    遇见问题汇总
    在路上积累
    Condition
    ReentrantReadWriteLock
    AbstractQueuedSynchronizer
    jmeter使用
    使用VisualVM监控java进程
    CNVD漏洞证书(2)
  • 原文地址:https://www.cnblogs.com/xzlive/p/12842808.html
Copyright © 2020-2023  润新知