ファイルを削除する方法に関する PHP ファイル関数のチュートリアルでは、unlink 関数を使用してファイルを削除する方法と、system 関数を介してシステム コマンドを呼び出して実行する方法の 2 つがあると述べました。ファイル削除コマンド 実際、PHP にはシステム関数以外にもコマンドを実行する方法がたくさんあります。ここでは、PHP Web サイト開発で最も一般的に使用される 4 つのコマンドを実行します。
準備
セキュリティ上の理由から、通常の状況では、仮想ホスト、XAMPP、DedeAMPZ、およびその他の PHP オペレーティング環境がシステムの外部コマンドを呼び出すことは禁止されています。したがって、PHP の機能を使用してコマンドを実行し、システムの外部コマンドを呼び出す必要がある場合は、PHP 実行環境がコマンドを実行するための PHP の機能をサポートしていることを確認する必要があります。
XAMPP または DedeAMPZ を使用している場合、通常、PHP コマンドを実行する関数の実行はデフォルトで禁止されています。php.ini 設定ファイルの disable_functions 項目から使用する関数を削除して、Apache を再起動します。 。私は DedeAMPZ を使用しているので、exec()、passthru()、system()、shell_exec() の 4 つの関数を削除しました。 PHP の実行環境を構成するにはどうすればよいですか?
PHP オペレーティング環境が自分で設定されている場合、デフォルトの php.ini 設定ファイルは外部コマンドを実行する関数の呼び出しを禁止しません。 もちろん、セキュリティ上の理由から、外部コマンドを実行する一部の関数の呼び出しを禁止する必要があります。システムの関数で disable_functions を見つけ、次のように設定します:
disable_functions = exec,system,passthru,shell_exec
つまり、これら 3 つの関数の実行は禁止されており、各関数はカンマで区切られています。 PHP.INI を設定するにはどうすればよいですか?
バーチャルホストを使用している場合は、PHP 環境が PHP を使用してコマンドを実行する機能をサポートしているかどうかをホスティングプロバイダーに問い合わせる必要があります。
その他の指示:
私は Windows システムを使用しているため、このチュートリアルの例では主に Windows システムからの外部コマンドの呼び出しに焦点を当てています。Linux の操作に慣れている場合は、Linux システムで Linux コマンドを実行してみるとよいでしょう。
PHP でコマンドを実行する 4 つの方法
方法 1: exec 関数を使用してシステムから外部コマンドを実行します
プロトタイプ: function exec(string $command,array[optional] $output,int[optional] $return_value)
2 3 4 |
< br/>
exec("dir" $outPut); ($outPut) |
1 |
|
1 2 3 |
<🎜> |
知識ポイント: system と exec の違いは、system がシステムの外部でコマンドを実行すると、コマンドが正常に実行された場合は結果をブラウザーに直接出力することです。それ以外の場合は false を返します。 2 番目のパラメータは、exec の 3 番目のパラメータと同じ意味を持ちます。
方法 3: 関数 passthru を使用して外部システム コマンドを実行します
プロトタイプ: function passthru(string $command,int[optional] $return_value)
知識ポイント: パススルーとシステムの違い パススルーは値を返さずに結果を直接ブラウザに出力し、画像データなどのバイナリを出力できます。
方法 4: バックティック ` (~ と同じキー) で外部システム コマンドを実行します
2 3 |
|
: この方法を使用して外部システム コマンドを実行する場合は、shell_exec 関数が使用可能であることを確認する必要があります。使用できない場合、このバッククォートを使用して外部システム コマンドを実行することはできません。
安全上の注意これらの関数を使用してコマンドを実行する場合、ユーザーが送信したデータに基づいてコマンドを実行している場合は、システムのセキュリティを考慮する必要があります。escapeshellcmd() 関数とscapeshellarg() 関数を使用すると、ユーザーが悪意を持ってコマンドを実行するのを防ぐことができます。システム、escapeshellcmd () は実行されたシステム コマンド用であり、escapeshellarg() は実行されたシステム コマンドのパラメータ用です。これら 2 つのパラメータは、addslashes() の関数に似ています。
その他の指示実行コマンドの戻り結果が非常に大きい場合、戻り結果を別のファイルに出力し、そのファイルを個別に読み取ることを検討すると、プログラムの実行効率が大幅に向上します。それが
1 |
|
1 |
|
: ここでシステムがコマンドを実行すると、結果がブラウザに直接出力されず、指定されたディレクトリ内のファイルに出力されるため、プログラムの実行効率が大幅に向上します。 この時点で、PHP でコマンドを実行する 4 つの最も一般的に使用されるメソッド、exec()、passthru()、system()、shell_exec() と、それらの違いが PHP Web サイト開発で導入されました。状況に応じて合理的に活用できるシステム外部コマンドは非常に便利です。
注意
: PHP Web サイト開発チュートリアル-leapsoul.cn 転載の際は、元のソースとこの記述をリンクの形で明記してください。