php的内置函数exec,system均可以调用系统命令(shell命令),固然还有passthru,escapeshellcmd等函数。 php
在不少时候利用php的exec,system等函数调用系统命令能够帮助咱们更好更快的完成工做。好比前二天笔者在批量处理.rar文件时exec就帮我了大忙了。 web
今天整理一下经常使用的调用系统函数发出来和你们分享经验。 shell
注意:要想使用这二个函数php.ini中的安全模式必须关闭,要否则为了安全起见php是不让调用系统命令的。 数组
先看一下php手册对这二个函数的解释: 安全
exec --- 执行外部程式 函数
语法 : string exec ( string command [, array &output [, int &return_var]] ) cmd
说明 : string
exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,若是你须要去执行一个命令,而且从命令去取得全部资料时,可使用passthru( )这个函数。 it
若是有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 若是数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,若是你不想要此函数附加元素的话,你能够在传递此数组给exec( )以前呼叫unset( )。 变量
若是有给予参数array和return_var,则传回执行的状态命令将会写到这个变量。
注意 : 若是你容许来自使用者输入的资料,能够传递到此函数,那么你应该使用escapeshellcmd( )来肯定此使用者没法哄骗(trick)系统来执行武断的(arbitrary)命令。
注意 : 若是你使用此函数来启动一个程式,并且但愿在背景里(background)执行的时候离开它,你必须肯定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,不然PHP将会悬挂(hang)直到程式执行结束。
system --- 执行外部程式而且显示输出
语法 : string system ( string command [, int &return_var] )
说明 :
system( )执行给予的命令command,而且输出结果。若是有给予参数return_var,则执行命令的状态码将会写到这个变量。
注意 : 若是你容许来自使用者输入的资料,能够传递到此函数,那么你应该使用escapeshellcmd( )来肯定此使用者没法哄骗(trick)系统来执行武断的(arbitrary)命令。
注意 : 若是你使用此函数来启动一个程式,并且但愿在背景里(background)执行的时候离开它,你必须肯定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,不然PHP将会悬挂(hang)直到程式执行结束。
若是PHP是运做成伺服器模组,在输出每一行后,system( )会试着自动地清除web伺服器的输出缓冲。
成功则传回命令的最后一行,失败则传回false。
若是你须要去执行一个命令,而且从命令去取得全部资料时,可使用passthru( )这个函数。
这二个都是用来调用系统shell命令,
不一样点:
exec能够把执行的结果所有返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败
systerm不须要提供$output函数,他是直接把结果返回出来,一样$return_var是执行的状态码 0为成功 1为失败
exec示例:
如下为引用的内容:
<?php
$a = exec("dir",$out,$status);
print_r($a);
print_r($out);
print_r($status);
?>
system示例:
如下为引用的内容:
<?php $a = system("dir",$out);
print_r($a);
print_r($out);
?>