ホームページ >バックエンド開発 >PHPの問題 >PHPのsystemとexecの違いは何ですか

PHPのsystemとexecの違いは何ですか

青灯夜游
青灯夜游オリジナル
2020-09-01 10:49:594358ブラウズ

php における system と exec の違いは、system は外部プログラムを実行して出力を表示し、結果を出力して返すことができますが、exec は外部プログラムを実行し、結果は出力せず、最後の行を返します。結果。

PHPのsystemとexecの違いは何ですか

#PHP で外部コマンドを呼び出すには、exec と system を使用できます。では、それらの違いは何なのでしょうか? この記事では、PHP における system と exec の違いを紹介します。

#1. exec ---外部プログラムの実行

string exec ( string $command [, array &$output [, int &$return_var ]] )
$command: 実行するシェルコマンド

$output: シェル コマンドの出力がこの配列に入力され、出力の各行が配列内の 1 つの要素に入力されます。配列にすでにいくつかの要素が含まれている場合、

exec() 関数はその内容を配列の末尾に追加することに注意してください。配列の末尾に追加したくない場合は、unset() 関数を使用して配列をリセットしてから、exec() 関数に渡します。

$return_var コマンド実行後のステータスを返します。コマンド実行の成功値は 0

戻り値: シェルコマンドによって出力された最後の行

##ps: 2>&1 exec が失敗した場合のデバッグの 1 つの方法は、パイプライン コマンドを使用することです。2>&1 を使用すると、コマンドはシェル実行中にエラーを出力します。 $output variable 、この変数を分析のために出力します。

#例 1

(1) コードの場所が見つかります。index.php ファイルの構造

##(2) コード

$out = [34];
$res = exec('ls 2>&1',$out,$return_status);
var_dump($res);
echo '------';
var_dump($out);
echo '------';
var_dump($return_status);
(3) 実行結果
zhangxueqing:demo playcrab$ php  ./1/index.php
/Users/playcrab/www/demo/1/index.php:10:
string(11) "webuploader"
------/Users/playcrab/www/demo/1/index.php:12:
array(10) {
  [0] =>
  int(34)
  [1] =>
  string(1) "1"
  [2] =>
  string(6) "1.html"
  [3] =>
  string(5) "1.php"
  [4] =>
  string(10) "client.php"
  [5] =>
  string(14) "design-pattern"
  [6] =>
  string(3) "img"
  [7] =>
  string(17) "jquery.blockUI.js"
  [8] =>
  string(10) "static.php"
  [9] =>
  string(11) "webuploader"
}
------/Users/playcrab/www/demo/1/index.php:14:
int(0)

2. システム ---

外部プログラムを実行し、出力を表示

string system ( string $command [, int &$return_var ] )
$command 実行するコマンド $return_var コマンド実行後の戻りステータス、値は 0 で成功を示します

戻り結果:

成功した場合は 0 を返します。

  • 失敗した場合 (コマンドが存在しないなど) 0 以外の値を返します

  • #1. サンプル コード
  • $res = system('ls 2>&1',$return_status);var_dump($res);echo '------';var_dump($return_status);

    2. 出力結果

概要:

system() 関数 他の言語と同様に、指定されたコマンドを実行し、結果を出力して返します。 2 番目のパラメータはオプションであり、コマンドの実行後にステータス コードを取得するために使用されます。

exec () 関数は system() に似ています。また、指定されたコマンドを実行しますが、結果は出力しませんですが、結果の最後の行を返します。コマンド結果の最後の行のみを返しますが、2 番目のパラメーター配列を使用すると、配列の末尾に結果を 1 行ずつ追加することで完全な結果を取得できます。したがって、配列が空でない場合は、呼び出す前に unset() を使用して配列をクリアするのが最善です。第3パラメータは第2パラメータを指定した場合のみ、コマンド実行時のステータスコードを取得できます。

推奨: 「PHP ビデオ チュートリアル

以上がPHPのsystemとexecの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。