質問: 外部プログラムを実行するためのPHPの関数は、引数として単一のモノリシックコマンド文字列を取ります。引数文字列をエスケープすることを少し気にしないと、コマンドが挿入される可能性があります。 引数ベクトル機能が`proc_open`に追加されましたが、これは通常の使用には複雑すぎます。それで、引数ベクトルを使用して外部プログラムを呼び出す簡単な方法はありますか?
回答: ### 答え : #### 解決: **このメソッドは、POSIX systemで実行されているPHPに限定されています。** `system` 、`popen`などの関数は、PHPまたはC&POSIXのコンテキストであるかどうかに関係なく、合成されたコマンド文字列を受け取ることを意図したものではありません。したがって、このような関数を設計する思考プロセスは、定数値のコマンド文字列から開始する必要があります。 次に、PHPは、Cのような個々の環境変数を設定する機能を提供します(後で設定を解除することはありません)。この機能は、インジェクション関連の攻撃の影響をほとんど受けません。したがって、環境変数を受け取るコマンドを作成し、コマンドベクトルをアセンブルしてから、`exec`シェル組み込みコマンドを呼び出すことができます。 完全なコードは次のとおりです。 ```