page counter next up previous contents
Next: apache sudo chroot Up: CHROOT Previous: 建立 chroot 系統   Contents   DYWANG_HOME

php 執行 shell 指令

  1. 先建立測試檔文件檔
    [root@dywang script]# cd tmp/
    [root@dywang tmp]# cp /etc/host.conf .
    [root@dywang tmp]# cat /etc/host.conf 
    multi on
    order hosts,bind
    
  2. php 函式 shell_exe():回傳結果為字串。
    [root@dywang tmp]# vim shexe.php
    [root@dywang tmp]# cat shexe.php
    <?php
    $results = shell_exec('cat -n host.conf');
    echo $results;
    ?>
    
  3. 執行 shexe.php 與直接執行 cat 指令結果一樣。
    [root@dywang tmp]# php shexe.php 
         1	multi on
         2	order hosts,bind
    [root@dywang tmp]# cat -n host.conf
         1	multi on
         2	order hosts,bind
    
  4. php 函式 exe,與 shell_exec() 相似,不同的只回傳最後一行。
    [root@dywang tmp]# vim exe.php 
    [root@dywang tmp]# cat exe.php 
    <?php
    $results = exec('cat -n host.conf');
    echo $results;
    ?>
    [root@dywang tmp]# php exe.php 
         2	order hosts,bind[root@dywang tmp]#
    
  5. php 函式 exe,也可以將輸出存成字串陣列,每行為陣列中的一個元素。
    [root@dywang tmp]# vim exearr.php 
    [root@dywang tmp]# cat exearr.php 
    <?php
    exec('cat -n host.conf',$results);
    print_r($results);
    ?>
    [root@dywang tmp]# php exearr.php 
    Array
    (
        [0] =>      1	multi on
        [1] =>      2	order hosts,bind
    )
    
  6. php 函式 system() 指令是一種混合體,可以像 shell_exec() 一樣輸出字串,但不必經 echo 輸出到螢幕,而是直接輸出到螢幕。
    [root@dywang tmp]# vim system.php 
    [root@dywang tmp]# cat system.php 
    <?php
    system('cat -n host.conf');
    ?>
    [root@dywang tmp]# php system.php 
         1	multi on
         2	order hosts,bind
    



De-Yu Wang 2020-05-19