php执行外部命令
exec
语法:string exec ( string command [, array &output [, int &return_var]] )
不输出任何东西,有返回值为命令结果的最后一行。
command:执行命令
output:命令结果,一行为数组一个元素
return_val:0为成功 1为失败
<?php
$res = exec('ls', $output, $return);
echo '返回结果';
print_r($res);
echo PHP_EOL;
echo "命令结果输出:";
print_r($output);
echo PHP_EOL;
echo "执行状态";
print_r($return);
echo PHP_EOL;
//运行输出
返回结果demo.txt
命令结果输出:Array
(
[0] => demo.php
[1] => demo.txt
)
执行状态0
system
语法:string system( string command [, int &return_var])
直接输出结果,有返回值为命令结果的最后一行。
<?php
$res = system('ls', $return);
echo '返回结果';
print_r($res);
echo PHP_EOL;
echo "执行状态";
print_r($return);
echo PHP_EOL;
//运行输出
demo.php
demo.txt
返回结果demo.txt
执行状态0
shell_exec
语法:string system( string command)
有返回值为命令结果。
<?php
$res = shell_exec('ls');
echo '返回结果'.PHP_EOL;
print_r($res);
返回结果
demo.php
demo.txt
passthru
语法:string system( string command[,int return_var])
无返回结果,命令结果原样输出
用来调用类似pbmplus(unix下的一个处理图片的工具,输出二进制原始图片的流)
header("content-type:image/gif");
passthru('./ppmtogif hunte.ppm');
escapeshellarg
1.确保用户只传递一个参数给命令
2.用户不能指定更多的参数一个
3.用户不能执行不同的命令
escapeshellcmd
1.确保用户只执行一个命令
2.用户可以指定不限数量的参数
3.用户不能执行不同的命令
system(escapeshellcmd('groups '.'myuser;id'))//报错
popen
返回值是一个句柄
开启一个程序 不必等程序执行完成
pclose(popen($doShell, 'r'));