【PHP8.x】shell_exec関数の使い方

作成日: 更新日:

shell_exec関数は、指定されたシェルコマンドを実行し、その実行結果を文字列として取得する関数です。この関数は、PHPスクリプトの中からオペレーティングシステム(OS)のコマンドや外部のプログラムを実行したい場合に利用されます。たとえば、ファイルの情報を一覧表示するlsコマンドや、システムの状態を確認するuptimeコマンドなどをPHPコードから実行し、その標準出力の内容をPHPの変数として受け取ることができます。

コマンドが正常に実行され、何らかの標準出力(STDOUT)があった場合、その出力内容全体が単一の文字列として返されます。もしコマンドが標準出力を行わなかった場合や、実行に失敗して何も出力されなかった場合は、NULLが返されます。標準エラー出力(STDERR)は戻り値には含まれないため、エラーメッセージを捕捉したい場合は、コマンド内で2>&1のようにリダイレクトするなどの工夫が必要です。

特に重要な点として、この関数を使用する際はセキュリティに十分な注意が必要です。ユーザーからの入力値を直接コマンドに含めると、悪意のあるコマンドが実行されてしまう「コマンドインジェクション」という脆弱性を引き起こす可能性があります。そのため、ユーザー入力をコマンドに渡す際には、必ずescapeshellarg()escapeshellcmd()といった関数を使用して、特殊文字を適切にエスケープすることが強く推奨されます。実行されるコマンドはPHPが動作しているサーバーのOS環境に依存するため、環境間の互換性も考慮する必要があります。

基本的な使い方

構文(syntax)

<?php
$command = 'ls -l';
$output = shell_exec($command);
echo $output;
?>

引数(parameters)

string $command

  • string $command: 実行したいシェルコマンドを文字列で指定します

戻り値(return)

string|null

実行したコマンドの標準出力結果を文字列として返します。コマンドの実行に失敗した場合は null を返します。

【PHP8.x】shell_exec関数の使い方 | いっしー@Webエンジニア