phpシステム外部コマンドの実行

2221 ワード

4つの方法があります.
- exec()、passthru()、system()、 shell_exec().
紹介を開始する前にphpプロファイルphpを確認する.iniには禁止があります.これは関数です.disableを見つけたfunctions、次のように構成されています.
disable_functions =
「disable_functions=」の後に4つの関数がある場合は、削除します.
デフォルトphp.iniプロファイルでは、外部コマンドを実行する関数を呼び出すことは禁止されていません.
方法1:exec()
1functionexec(string $command,array[optional] $output,int[optional] $return_value)
phpコード:
header("content-type:text/html;charset=gb2312");
    // echo exec("ipconfig",$file);
    // echo "";
    // print_r($file);
    $a = exec("ipconfig",$out,$status);
    print_r($a);
    echo "-----------------------------------------------------";
    echo "
"; 
 

    //print_r($out);

    var_dump($out);

    echo "

";
    echo "-----------------------------------------------------";
    print_r($status);
実行結果:
1Array( [0] => index.php [1] => test.php)
知識点:
execはシステム外部コマンドを実行するときに結果を出力しないで、結果の最後の行を返します.結果を得るには、2番目のパラメータを使用して指定した配列に出力することができます.この配列の1つのレコードは、出力の1行を表します.つまり、出力結果が20行ある場合、この配列には20のレコードがあります.異なるシステムの外部コマンドを呼び出す結果を繰り返し出力する必要がある場合は、システムの外部コマンドの結果を出力するたびに、混乱を防ぐために、この配列を空にしたほうがいいです.3番目のパラメータは、コマンド実行のステータスコードを取得するために使用され、通常、実行成功は0を返す.
方法2:passthru()
1functionpassthru(string $command,int[optional] $return_value)
コード:
    passthru("ls");
?>
実行結果:
1index.phptest.php
知識点:
passthruはsystemとは異なり、passthruは直接ブラウザに結果を出力し、echoやreturnを使用して結果を表示する必要はなく、値を返さず、画像データなどのバイナリを出力することができます.
方法3:system()
1functionsystem(string $command,int[optional] $return_value)
コード:
        system("ls /");
?>
実行結果:
1binbootcgroupdevetchomeliblost+foundmediamntoptprocrootsbinselinuxsrvsystmpusrvar
知識点:
システムとexecの違いは、システムがシステム外部コマンドを実行するときに、echoやreturnを使用して結果を表示する必要がなく、コマンドが成功するとtrueを返し、そうでない場合falseを返すことです.2番目のパラメータはexecの3番目のパラメータと同じ意味です.
方法4:アンチエイリアス`とshell_exec()
shell_exec()関数は実際には逆利き(`)オペレータの変形にすぎない
コード:
    echo `pwd`;
?>[object Object]
実行結果:
1/var/www/html
原文住所:https://www.3mooc.com/front/articleinfo/1490