web-dev-qa-db-ja.com

PHPのsystem()、exec()、Shell_exec()の違いは何ですか?

3つのPHP関数によって外部コマンドを実行することが可能です。

system();
exec();
Shell_exec();

しかし、それらの違いは何ですか?それらの特定のアプリケーションにもかかわらず、ほとんどの場合、同じように使用できます。それらが等しく使用できる場合、どちらが優先されるかを知りたいです。たとえば、ファイルの解凍またはフォルダーの圧縮(tarコマンドを使用)の場合、どちらが優先されますか(おそらくパフォーマンスの観点から)。

UPDATE:別の質問で、非常に便利なlinkこれらの機能のさまざまな側面を説明します。他の人がセキュリティの問題やその他の側面をよりよく理解するために使用する可能性があるため、ここでリンクを共有します。

63
Googlebot

exec —外部プログラムを実行する

システム —外部プログラムを実行し、出力を表示する

Shell_exec —シェル経由でコマンドを実行し、完全な出力を文字列として返します

出力が必要ない場合は、execを使用します。

詳細:

89
Gavriel