PHP でサーバのコマンドを実行する関数ってどれくらい種類があるのか、調べる機会があったので、そのメモです
system()
や exec()
が有名かと思いますが、結構種類が多かった……!
- exec
- passthru
- pcntl_exec
- popen
- proc_open
- shell_exec
- system
- 実行演算子
しかし多いな…… とりあえず8種類か。
参考にしたのは PHPのドキュメントのこちら。
実行演算子は関数ではなくて、 ``` で囲んだ文字列を実行できるというもの。強そう (危険そう)
<?php $output = `ls -al`; echo "<pre>$output</pre>";
また、pcntl_exec
と実行演算子は、前述のドキュメント「システムプログラムの実行」一覧には載っていません。この 8種類というのも自分調べなので、まだ実行させる関数は他にもあるのかもしれない。わからない。
たとえばセキュリティ、OSコマンドインジェクションの調査をするとかなら、可能性としてはここらの関数をひととおりチェックする必要があるということかな。