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

作成日: 更新日:

『escapeshellarg関数は、シェルコマンドへ引数として渡す文字列を、安全な形式にエスケープするために使用する関数です。この関数の主な目的は、コマンドインジェクションと呼ばれるセキュリティ上の脆弱性を防ぐことです。ユーザーからの入力など、外部から受け取った信頼できないデータをコマンドの引数として使用する際に、悪意のある文字列によって意図しないコマンドが実行される危険を回避します。

具体的な動作として、この関数は引数として受け取った文字列全体をシングルクォート(')で囲みます。もし元の文字列内にシングルクォートが含まれている場合は、シェルがそれを正しく解釈できるように適切にエスケープ処理を行います。これにより、エスケープされた文字列は、シェルの特殊文字や空白を含んでいても、常に単一の安全な引数として扱われるようになります。

この関数は、exec()shell_exec()system()といったコマンドを実行する関数と組み合わせて使われます。引数にエスケープしたい文字列を渡し、戻り値として得られる安全な文字列をコマンドの一部として組み立てて使用します。注意点として、この関数はコマンドの引数一つ分をエスケープするためのものであり、コマンド全体をエスケープするものではありません。

基本的な使い方

構文(syntax)

<?php

// シェルコマンドの引数として渡したい文字列
$user_input = "my file's name.txt";

// 文字列をエスケープし、安全な引数として扱えるようにする
$safe_argument = escapeshellarg($user_input);

// エスケープされた文字列を出力する
// 出力結果: "'my file'\\''s name.txt'"
echo $safe_argument;

?>

引数(parameters)

string $arg

  • string $arg: シェルコマンドに安全に渡したい引数文字列

戻り値(return)

string

与えられた文字列を、シェルコマンドの引数として安全に使用できるようにエスケープした文字列を返します。

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