1028.us

管理ページへ

ログアウト

外部コマンドを実行する

PHPで外部コマンドを実行するにはexec関数を使用する。

$cmd = 'ls -l /opt';
echo exec($cmd);
drwxr-xr-x     5 root  wheel    170 Jun 10 16:14 standalone

exec関数は第二引数のアウトプットを指定しないと、実行結果の最後の行しか返さない。

$cmd = 'ls -l /usr';
exec($cmd, $opt);
print_r($opt);
Array
(
    [0] => total 8
    [1] => lrwxr-xr-x     1 root  wheel      8 Aug 30  2014 X11 -> /opt/X11
    [2] => drwxr-xr-x  1066 root  wheel  36244 Jun 10 16:15 bin
    ・・・省略・・・
)

第二引数を指定すれば、出力結果がすべて1行ごとに配列に格納される。

$cmd = 'ls -l /usr';
exec($cmd, $opt, $return_ver);
echo '実行結果:'.$return_ver;
実行結果:0

第三引数を指定すると、実行結果のステータス0(正常終了)、0以外(失敗)が出力される。

実行権限

$cmd = "echo 'pass' | sudo -S ls /root";
exec($cmd, $opt, $return_ver);
echo '実行結果:'.$return_ver;

実行権限がないコマンドをexec関数で実行する場合はコマンドをsudoで実行する。
ここでは、「echo ‘pass’」の出力を「sudo -S ls /root」にパイプで渡している。

ping

$r = exec(sprintf('ping -c 1 -W 1 %s',
          escapeshellarg($ipaddr)),
          $opt, $return_ver);
 
if($return_ver == 0){
  echo '疎通成功';
}else{
  echo '疎通失敗';
}

ssh(セキュアシェル)を実行する

//リモートコンピュータに接続する
$con = ssh2_connect('xxx.xxx.xx.x', 22);
//ユーザー名とパスワードを指定する
ssh2_auth_password($con, 'user', 'password');
//ファイルをコピーする
ssh2_exec($con, 'cp -p /Users/Shared/PHP/php1.txt .');

shell_exec関数

$out = shell_exec('ls -l');
echo $out;

第二引数、第三引数は使用できず、行時にエラーが発生、または何も出力しなかった場合はNULLを返す。

system関数

$cmd = 'curl http://kojikamming.com/';
system($cmd, $opt);
print_r($opt);

コマンド実行結果を文字列で出力する。

List of Category