モノラルログ

マツオ ( @matsuoshi / monaural.net ) のざっくりしたブログです

PHP でシステムのコマンドを実行する関数の種類を調べた

PHP でサーバのコマンドを実行する関数ってどれくらい種類があるのか、調べる機会があったので、そのメモです

system()exec() が有名かと思いますが、結構種類が多かった……!

  • exec
  • passthru
  • pcntl_exec
  • popen
  • proc_open
  • shell_exec
  • system
  • 実行演算子

しかし多いな…… とりあえず8種類か。

参考にしたのは PHPのドキュメントのこちら。

www.php.net

実行演算子は関数ではなくて、 ``` で囲んだ文字列を実行できるというもの。強そう (危険そう)

<?php
$output = `ls -al`;
echo "<pre>$output</pre>";

www.php.net

また、pcntl_exec と実行演算子は、前述のドキュメント「システムプログラムの実行」一覧には載っていません。この 8種類というのも自分調べなので、まだ実行させる関数は他にもあるのかもしれない。わからない。

たとえばセキュリティ、OSコマンドインジェクションの調査をするとかなら、可能性としてはここらの関数をひととおりチェックする必要があるということかな。