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

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

青灯夜游
リリース: 2023-03-05 15:14:01
オリジナル
4311 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート