php 执行shell命令的函数

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);   

?> 

相关文章
相关标签/搜索