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

作成日: 更新日:

system関数は、外部プログラムを実行し、その出力を直接ブラウザに出力する関数です。この関数は、PHPスクリプトからOSのコマンドラインインタフェースを利用して、様々なシステムコマンドを実行するために使用されます。例えば、ファイルシステムの操作、ネットワーク関連の処理、プロセスの実行などが可能です。

system関数は、実行するコマンドを文字列として引数に取ります。この文字列は、そのままOSのシェルに渡されるため、セキュリティ上のリスクを考慮する必要があります。特に、ユーザーからの入力に基づいてコマンドを生成する場合、コマンドインジェクション攻撃を防ぐために、入力のサニタイズやエスケープ処理が不可欠です。

関数は、実行されたコマンドの終了ステータスを返します。終了ステータスは、コマンドが正常に完了したかどうかを示す数値で、通常は0が正常終了を意味します。エラーが発生した場合、0以外の値が返されます。この終了ステータスを利用することで、実行されたコマンドの結果をPHPスクリプト内で判断し、適切な処理を行うことができます。

system関数は、コマンドの実行結果を標準出力として直接ブラウザに出力するため、PHPスクリプトの出力を制御する必要があります。必要に応じて、出力バッファリングを利用したり、ob_start()ob_end_clean() などの関数を使用して、出力を制御することができます。

注意点として、system関数はサーバー環境によっては利用が制限されている場合があります。php.ini ファイルの設定で disable_functions ディレクティブに system が指定されている場合、この関数は使用できません。セキュリティ上の理由から、system関数の使用を制限することは一般的なプラクティスです。代替手段として、proc_open 関数や exec 関数など、より柔軟で安全な方法で外部プログラムを実行することを検討すべきです。

基本的な使い方

構文(syntax)

system ( string $command , int &$return_var = null ) : string

引数(parameters)

string $command, int &$result_code = null

  • string $command: 実行したいシステムコマンドを文字列で指定します。
  • int &$result_code = null: コマンド実行結果の終了コードを格納する変数への参照です。省略可能です。

戻り値(return)

string|false

system() 関数の戻り値は、実行されたコマンドの標準出力を表す文字列、またはコマンドの実行に失敗した場合は false です。

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