PHP 的内置函数 exec()、system()、passthru()、shell_exec()、都可以调用系统命令(shell 命令)。这些用函数能把 PHP 的一些操作,直接交给系统来处理,从而大大提高工作效率。
下面给出简单的示例对比说明一下各自的特点:
1、exec()
定义
string exec ( string $command [, array &$output [, int &$return_var]])
参数说明
command 要执行的命令
output 若提供此参数,则会用命令执行的输出填充此数组,每行输出填充数组中的一个元素。数组中不包含行尾空白符,如 \n。如果 $output 已经包含部分元素,exec() 函数会给 该数组末尾追加元素。
return_var 若同时提供 output 和 return_var 参数,命令执行后,的返回状态会被写入到此变量。
示例代码
$shell = 'php -v'; echo exec($shell, $output); echo PHP_EOL; echo '==========================================='; echo PHP_EOL; print_r($output);
输出结果
2、system()
定义
string system (string $command [, int &$return_var])
说明
此函数跟 C 版本中的 system() 函数一样,执行 $command 参数所有指定的命令,并输出结果。该输出结果有经过处理,passthru() 函数的输出为原始输出。
返回值
若提供 $return_var 参数,则外部命令执行后的返回状态会被记录到此参数。成功则返回命令输出的最后一行,失败则返回 FALSE.
示例代码
$shell = 'php -v'; system($shell);
输出结果
3、passthru()
定义
void passthru (string $command [, int &$return_var])
说明
本函数可以获取一个命令未经任何处理的 原始输出。
返回值
若提供 $return_var 参数,则返回值会被记录到此参数。void 类型,无返回值。
示例代码
$shell = 'php -v'; passthru($shell);
输出结果
4、shell_exec() 等同于 反撇号 `
定义
string shell_exec(string $cmd)
返回值
命令执行的输出。如果执行过程发生错误或不产生输出,则返回 NULL. 因此不能通过本函数的返回值检验是否执行成功。若需要检查进程的退出码,可使用 exec().
说明:本函数同 执行操作符。意思就是说,shell_exec() 函数实际上 反撇号 (`)操作符的变体。
示例代码
$shell = 'php -v'; echo shell_exec($shell); # 等同于下面执行方式 echo `{$shell}`;
输出结果完全一样:
转载请注明:微刻 blog.wecot.cn » PHP 调用系统命令函数示例讲解