「PHP」PHP から OS コマンドを実行する
PHP ビギナーですが、PHP から OS のコマンド実行するサンプル作ってみました。その時のメモです。
以下の exec、system、passthru 関数辺り使うといけるみたいです。
・PHP: exec - Manual
http://php.net/manual/ja/function.exec.php
・PHP: system - Manual
http://www.php.net/manual/ja/function.system.php
・PHP: passthru - Manual
http://www.php.net/manual/ja/function.passthru.php
exec 関数だけ出力の機能がなくて、引数の $output にコマンドからの出力が格納されるみたいですね。
以下、それぞれサンプルを。
■ exec.php
<?php echo(exec("ls /usr/local/tmp/test"))."\n"; exec("ls /usr/local/tmp/test", $output); print_r($output); //var_dump($output); echo("\n"); ?>
■ 実行結果
test3 Array ( [0] => test1 [1] => test2 [2] => test3 )
※ PHP で配列の内容を出力するには、print_r、var_dump 関数が使えるみたいです。
・PHP: print_r - Manual
http://www.php.net/manual/ja/function.print-r.php
・PHP: var_dump - Manual
http://www.php.net/manual/ja/function.var-dump.php
■ system.php
<?php system("ls -la /usr/local/tmp/test"); ?>
■ 実行結果
drwxr-xr-x. 2 root root 4096 4月 19 01:49 2012 . drwxr-xr-x. 4 root root 4096 4月 19 01:48 2012 .. -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test1 -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test2 -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test3
■ passthru.php
<?php passthru("ls -la /usr/local/tmp/test"); ?>
■ 実行結果
drwxr-xr-x. 2 root root 4096 4月 19 01:49 2012 . drwxr-xr-x. 4 root root 4096 4月 19 01:48 2012 .. -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test1 -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test2 -rw-r--r--. 1 root root 6 4月 19 01:49 2012 test3
※ ちなみに /usr/local/tmp/test で ls コマンド実行結果
test1 test2 test3