【PHP8.x】exec関数の使い方
exec関数は、外部プログラムを実行する関数です。この関数は、PHPスクリプトからオペレーティングシステムのコマンドライン上で実行可能なプログラムを呼び出し、その結果を文字列として取得するために使用されます。exec関数は、セキュリティ上のリスクを伴う可能性があるため、使用には十分な注意が必要です。
具体的には、exec関数は指定されたコマンドを実行し、そのコマンドの標準出力(stdout)を変数に格納することができます。オプションで、コマンドの終了ステータス(リターンコード)を取得することも可能です。これにより、実行された外部プログラムが正常に終了したかどうかを判断できます。
exec関数の基本的な構文は以下の通りです。
string exec ( string $command [, array &$output [, int &$return_var ]] )
ここで、$commandは実行するコマンド、$outputはコマンドの出力が格納される配列(オプション)、$return_varはコマンドの終了ステータスが格納される変数(オプション)です。
exec関数を使用する際には、以下の点に注意する必要があります。
- セキュリティ: ユーザーからの入力など、信頼できないデータに基づいてコマンドを生成することは避けるべきです。コマンドインジェクション攻撃のリスクがあります。入力値を適切に検証し、エスケープ処理を行う必要があります。
- 権限: PHPスクリプトを実行しているユーザー(通常はWebサーバーのユーザー)が、実行しようとしているコマンドに対する実行権限を持っている必要があります。
- 出力の扱い: コマンドの出力は、大量のデータを返す可能性があります。必要に応じて、出力を制限したり、適切に処理したりする必要があります。
- エラー処理: コマンドが正常に実行されなかった場合(例えば、ファイルが見つからない、権限がないなど)、適切なエラー処理を行う必要があります。
exec関数は、システム管理ツールや外部サービスとの連携など、特定の状況下では非常に有用な機能です。しかし、セキュリティと権限に注意し、慎重に使用する必要があります。より安全な代替手段として、proc_open
関数やshell_exec
関数なども検討できます。
基本的な使い方
構文(syntax)
<?php
$output = [];
exec('ls -l', $output);
print_r($output);
?>
引数(parameters)
string $command, array &$output = null, int &$result_code = null
- string $command: 実行したいコマンドライン文字列
- array &$output = null: コマンドの実行結果の各行を格納する配列(参照渡し)
- int &$result_code = null: コマンドの終了コードを格納する整数(参照渡し)
戻り値(return)
string|false
exec関数は、実行したコマンドの標準出力を文字列として返します。コマンドの実行に失敗した場合はfalseを返します。