PHPの組み込み関数execやsystemはシステムコマンド(シェルコマンド)を呼び出すことができ、もちろんpassthruやescapeshellcmdなどの関数もあります。
多くの場合、PHP の exec、system、およびその他の関数を使用してシステム コマンドを呼び出すと、作業をより適切かつ迅速に完了するのに役立ちます。たとえば、2 日前に .rar ファイルをバッチ処理していたとき、exec は非常に役に立ちました。
今日は、よく使われる通話システムの機能を整理し、私の経験を皆さんと共有します。
注: これら 2 つの関数を使用したい場合は、php.ini のセーフ モードをオフにする必要があります。オフにしないと、セキュリティ上の理由から、PHP ではシステム コマンドの呼び出しが許可されません。
まず、PHP マニュアルでこれら 2 つの関数の説明を見てみましょう:
Exec --- 外部プログラムを実行します
構文: string exec ( string command [, array &output [, int &return_var]] )
説明:
Exec() は指定されたコマンドを実行しますが、何も出力しません。コマンドを実行してコマンドからすべての情報を取得する必要がある場合は、 を使用できます。 passthru() 関数。
パラメータ配列が指定されている場合、指定された配列にはコマンドによって出力された各行が埋め込まれます。 注: 配列にすでに要素が含まれている場合、exec() はそれを配列の末尾に追加します。この関数で要素を追加したくない場合は、配列を exec() に渡す前に unset() を呼び出すことができます。
パラメータ array と return_var が与えられた場合、実行に戻されたステータスコマンドがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは何らかの出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP は終了するまでハングします。プログラムの実行が終了します。
システム --- 外部プログラムを実行し、出力を表示します
構文: string system ( string command [, int &return_var] )
説明:
System()は指定されたコマンドcommandを実行し、結果を出力します。パラメータ return_var が指定されている場合、実行されたコマンドのステータス コードがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは何らかの出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP は終了するまでハングします。プログラムの実行が終了します。
PHPがサーバーモジュールとして実行されている場合、system()は各行を出力した後にWebサーバーの出力バッファを自動的にクリアしようとします。
成功した場合はコマンドの最後の行を返し、失敗した場合は false を返します。
コマンドを実行して、コマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。
これら 2 つはシステム シェル コマンドを呼び出すために使用されます。
違い:
Execは、すべての実行結果を$output関数(配列)に返すことができます。$statusは、0が成功、1が失敗を意味します。
systerm は $output 関数を提供する必要はありません。同様に、$return_var は実行ステータス コードです。 0 は成功、1 は失敗です。実行例:
リーリー
システム例:
リーリー
実行して効果を確認できます
http://www.bkjia.com/PHPjc/486080.html