PHP:escapeshellcmd()とescapeshellarg()の違いについて

PHPのescapeshellcmd関数とescapeshellarg関数の違いについて解説します。

主な違い

  • escapeshellarg(): 引数全体をシングルクォートで囲み、内部のシングルクォートをエスケープ
    • 用途: コマンドの引数を安全に渡す
    • 例: 'my file.txt''my file.txt'
  • escapeshellcmd(): シェルのメタ文字(;, |, &, `, $ など)をバックスラッシュでエスケープ
    • 用途: コマンド文字列全体を保護
    • 例: echo hello; rm -rf /echo hello\; rm -rf /

重要な注意点

  • 両方を同時に使用しない: escapeshellcmd(escapeshellarg()) は脆弱性を生む可能性
  • 推奨: 引数には escapeshellarg() のみ使用
  • 最も安全: proc_open() や配列形式で引数を渡す方法

この記事について

このページは、CEOが2025年10月30日 15:21に書いた記事です。

ひとつ前の記事は「PHP:preg_match()とpreg_grep()の違い」です。

次の記事は「macOS 26 Tahoeの不具合:スリープからの復帰に時間がかかる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。