1、exec() 函数
2、system函数 有返回值
3、shell_exec() 函数 和exec有点一样
4、passthru() 函数没有返回值 和system一起记忆
5、popen()函数
首先执行命令返回一个资源句柄,然后我们用while循环用fgets函数每次读出4096个字节最后输出
6、proc_open()函数
第一个参数是要执行的命令
第二个参数是标准输入标准输出,是一个数组
第三个参数存储函数执行的结果
<?php
$command = "ls -al /etc";
exec($command, $array);
var_dump($array);
$result = system($command);
$result = shell_exec($command);
var_dump($result);
?>
2、system函数 有返回值
3、shell_exec() 函数 和exec有点一样
4、passthru() 函数没有返回值 和system一起记忆
5、popen()函数
首先执行命令返回一个资源句柄,然后我们用while循环用fgets函数每次读出4096个字节最后输出
<?php
$test = "ls /tmp/test";
$fp = popen($test,"r"); //popen打一个进程通道
while (!feof($fp)) { //从通道里面取得东西
$out = fgets($fp, 4096);
echo $out; //打印出来
}
pclose($fp);
?>
6、proc_open()函数
第一个参数是要执行的命令
第二个参数是标准输入标准输出,是一个数组
第三个参数存储函数执行的结果
<?php
$test = "ls /tmp/test";
$arrayarray = array(
array("pipe","r"), //标准输入
array("pipe","w"), //标准输出内容
array("pipe","w") //标准输出错误
);
$fp = proc_open($test,$arrayarray,$pipes); //打开一个进程通道
echo stream_get_contents($pipes[1]); //为什么是$pipes[1],因为1是输出内容
proc_close($fp);
同步shell命令
#!/usr/bin/expect -f
set password ****
spawn rsync -auzvP /home/htdocs/shopphp/img/pimgs root@10.0.16.103:/home/htdocs/shopphp/img
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "$password\r"
} "password:" {send "$password\r"}
#expect "root@10.0.16.103's password:"
#send "$password\r"
send "exit\r"
expect eof