「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


以上です。


< 環境情報 >
CentOS 6.2
PHP 5.3.3