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

作成日: 更新日:

passthru関数は、外部プログラムを実行し、その出力を直接ブラウザに出力する関数です。PHPスクリプトからシェルコマンドなどの外部コマンドを実行する必要がある場合に利用されます。

この関数は、コマンドを引数として受け取り、そのコマンドをOSのシェルを通して実行します。実行されたコマンドの標準出力は、バイナリデータを含めて、そのままクライアントのブラウザに送信されます。passthru関数は、コマンドの実行結果を文字列として返すのではなく、直接出力ストリームに書き込む点がexec関数やsystem関数と異なります。

passthru関数は、主に外部プログラムが生成する生の出力データを、PHPスクリプトを介してクライアントに配信する場合に便利です。例えば、画像処理プログラムや動画エンコーダなどの出力を直接ブラウザに表示する場合などが考えられます。

セキュリティ上の注意点として、passthru関数に渡すコマンドは、慎重に扱う必要があります。ユーザーからの入力に基づいてコマンドを組み立てる場合、コマンドインジェクション攻撃のリスクが高まります。入力値の検証やエスケープ処理を徹底し、安全なコマンド実行を心がける必要があります。

また、safe_modeが有効な場合、passthru関数の利用は制限されることがあります。disable_functionsディレクティブでpassthru関数が無効化されている場合もあります。これらの設定を確認し、利用環境に合わせて適切に対応する必要があります。

基本的な使い方

構文(syntax)

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

引数(parameters)

string $command, ?int &$result_code = null

  • string $command: 実行するコマンドを指定する文字列
  • ?int &$result_code: コマンドの終了コードを受け取るための変数への参照。指定しない場合はNULLになる

戻り値(return)

void

passthru関数は、外部コマンドの実行結果を標準出力に直接出力し、コマンドの終了ステータスを返しますが、PHPの関数としては直接的な戻り値はありません。

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