1、Exec函数
exec函数用来执行一个外部的应用程序,用法如下:
exec(string **cmd, [array output, int return_var])
cmd**:执行的命令
output:用来获得执行命令输出的每一行字符串,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,请在传入 exec() 函数之前对数组使用unset()函数进行重置
return_var:存放执行命令返回值,0为执行成功状态,1为执行失败状态
<?php
header('Content-type: text/html; charset=GBK');
exec("ipconfig",$output,$stats);
echo "<pre>";
echo $stats ."<br/>";
var_dump($output);
echo "</pre>";
?>
2、System函数
system函数**用来执行一个外部的应用程序并显示输出结果,用法如下:
system(string cmd, **[int return_var]**)
cmd**:执行的命令
return_var:存放执行命令返回值,0为执行成功状态,1为执行失败状态
<?php
header('Content-type: text/html; charset=GBK');
echo "<pre>";
system("ipconfig",$stats);
echo "</pre>";
?>
3、Passthru函数
passthru函数**执行一个外部的应用程序并显示输出结果(与system使用并无太大差别)**,用法如下:
passthru**(string cmd, [int return_var]**)
cmd**:执行的命令
return_var:**存放执行命令返回值,0为执行成功状态,1为执行失败状态
注:当UNIX系统命令输出是二进制数据,需用passthru代替exec和system函数
<?php
header('Content-type: text/html; charset=GBK');
echo "<pre>";
passthru("ipconfig");
echo "</pre>";
?>
4、Shell_exec函数
shell_exec函数用来执行shell命令**并返回完整的输出字符串**,用法如下:
shell_exec(string **cmd**)
cmd**:**执行的命令
<?php
header('Content-type: text/html; charset=GBK');
$a = shell_exec("ipconfig");
echo "<pre>";
echo $a;
echo "</pre>"
?>
5、运算符
“``”运算符用来执行shell命令并返回完整的输出字符串,**与shell_exec函数功能相同
<?php
header('Content-type: text/html; charset=GBK');
$a = `ipconfig`;
echo "<pre>";
echo $a;
echo "</pre>"
?>
6、Eval函数
eval函数字符串按照PHP代码,该字符串必须是合法的 PHP 代码,**且必须以分号结尾**
注:如果没有在代码字符串中调用 return 语句,则返回NULL。如果代码中存在解析错误,则eval()函数返回False
<?php
header('Content-type: text/html; charset=GBK');
$myvar = "var_name";
$cmd = $_GET["cmd"];
if(isset($cmd))
{
eval("$cmd");
}
?>
注:**如果执行失败,需要查看php.ini的magic_quotes_gpc设置是否为On(在PHP5版本及以前),设置为On会对“””或者“’”进行转义,变成“\””或者“\’”,在PHP6,PHP7是没有magic_quotes_gpc这个选项并且默认为关闭
7、Preg_replace函数
preg_replace 函数执行一个**正则表达式的搜索和替换,并返回替换的字符串**,用法如下:
preg_replace(mixed $pattern, mixed $replacement, mixed $subject, [int $limit, int $count]**)
$pattern:要搜索的正则表达式,可以是字符串或一个字符串数组
$replacement:用于替换的字符串或字符串数组
$subject:要搜索替换的目标字符串或字符串数组
$limit:可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)
$count::**可选,为替换执行的次数
<?php
$string = "I am Corgi";
$pattern = "/^/e";
echo preg_replace($pattern,$_GET["cmd"],$string);
?>
8、Call_user_func函数
call_user_func调用一个自定义函数并输出,如有错误返回False,用法如下:
call_user_func(callback function, [mixed parameter])
function:调用自定义函数名称
parameter:**自定义函数参数
<?php
call_user_func($_GET['fun'],$_GET['cmd']);
?>
9、Call_user_func_array
call_user_func_array调用一个自定义函数并输出,如有错误返回False,用法如下:
call_user_func_array(callback function,** [array param_arr]**)
function:调用自定义函数名称
param_arr:参数数组作为回调函数的的参数传入
<?php
call_user_func_array($_GET['a'],$_GET['b']);
?>
10、Create_function
create_function创建一个匿名函数,并为其返回唯一名称,用法如下:
create_function(string args,string code**)**
create_function(string args,string code)
等同于下面,并且eval
eval(
function_lambda_func($args){
$code;
})
args:声明的函数变量部分
code:执行的方法代码部分
注:PHP 7.2以后废弃
<?php
$cmd = $_GET['cmd'];
$c = create_function('',$cmd);
$c();
?>