[php命令执行函数]详解各种php命令执行函数

如下几种命令执行函数:

目录

system

exc

passthru

shell_exec

反引号``

popen


system

system函数简介:用于执行命令

语法形式:

system(string $command,int $return_var=?)
command:必选参数,字符类型,被system函数执行的命令,如ls

return_var:可选参数,整数类型,如果提供此参数,则command命令执行之后的返回状态会被放置到return_var函数内。返回0表示执行成功,返回1表示执行失败。

示例:

<?php
highlight_file(_FILE_);
$cmd=$_GET["benben"];
if(isset($cmd)){
    system($cmd);
}
?>
system函数默认有回显。

exc

exc(string $command,array $output=?,int $return_var=?)

command:必选参数,被执行的命令

output:可选参数,如果选择 ,就会将执行结果以数组的形式填充到这个变量中

return_var:可选变量,如果选择,就会将命令是否执行成功的结果填入此变量,成功为0,失败为1

如果没有设置output变量,则会回显结果的最后一行,即当作数组处理后的最后一个数组元素。

<?
hightlight_file(_FILE_));
$cmd=$_GET['cmd'];
exc($cmd,$array);
print_r($array);
?>

passthru

passthru(string $command,int &$return_var=?)

command:必选参数,被执行的命令

return_var:可选参数,整数类型,&表示可以通过引用的方式来在函数执行结束之后修改这个值,如果提供此参数,则command命令执行之后的返回状态会被放置到return_var函数内。返回0表示执行成功,返回1表示执行失败。

类似于system

<?
highlight_file(_FILE_);
$cmd=$_GET['cmd'];
echo "This is test!!!"
passthru($cmd);
?>

shell_exec

shell_exec(string $cmd)

cmd:需要执行的命令

shell_exec会将命令执行的输出返回成一个字符串,这里注意,不是回显,返回跟回显是不一样的,返回意味着将整个函数会被当作一个字符串,而想要使用它则必须直接显示,如

echo shell_exec('ls');

或者用变量承接它,从而在后续继续使用,如

$output = shell_exec('ls -l');
echo "<pre>$output</pre>";    #此处的<pre>意思是将输出内容以原始形式显示,不会去除空格,换行等

这种方式能够让我们在后续代码中更加方便的调用之前的结果。

反引号``

与shell_exec一模一样

举例

$output = `ls -l`;
echo "<pre>$output</pre>";

$output = shell_exec('ls -l');
echo "<pre>$output</pre>";

是等价的。

popen

其操作跟文件操作类似,此函数会执行命令并且返回一个文件指针(实际上文件并不存在)。如下

resource popen ( string $command , string $mode )

command:要执行的shell命令,如ls

mode:打开文件的模式,可以是'r'(读取模式),也可以是'w'(写入模式)

返回值:

如果执行成功,则返回一个文件指针resource,用于后续操作。

如果失败,则返回false。

示例用法

$handle = popen('ls -l', 'r');
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle);
        echo $buffer;
    }
    pclose($handle);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值