PHP执行系统命令的有几个常用的函数

PHP执行系统命令的有几个常用的函数,如有:system函数、exec函数、popen函数,passthru,shell_exec函数他们都可以执行系统命令,不过前提时必须系统给了权限了哦。

system函数

说明:执行外部程序并显示输出资料。

语法:string system(string command, int [return_var]);

返回值: 字符串

详细介绍:本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果,若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中,同样值得注意的是若需要处理用户输入的资料,而又要防止用户耍花招破解系统,则可以使用 EscapeShellCmd(),若 PHP 以模块式的执行,本函数会在每一行输出后自动更新 Web 服务器的输出缓冲暂存区,若需要完整的返回字符串,且不想经过不必要的其它中间的输出界面,可以使用 PassThru()。

实例代码:

  1. echo "Last line of the output: " . $last_line;  echo "<hr >Return value: " . $retval;
  2. ?>

exec函数

说明:执行外部程序。

语法:string exec(string command, string [array], int [return_var]);

返回值: 字符串

详细介绍:本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。

要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。

值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。

实例代码:

  1. < ?php  echo exec("whoami");
  2. ?>

popen函数

说明:打开文件。

语法:int popen(string command, string mode);

返回值: 整数

详细介绍:本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。

实例代码:

  1. < ?  $fp = popen( "/bin/ls", "r" );
  2. ?>

使用函数passthru执行系统外部命令

原型:function passthru(string $command,int[optional] $return_value)

知识点:passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。

反撇号`(和~在同一个键)执行系统外部命令,代码如下:echo `dir`;

知识点:在使用这种方法执行系统外部命令时,你要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。

安全性说明:当你使用这些函数执行命令时,如果是根据用户提交数据作为执行命令的话,你需要考虑系统安全性,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。

现在来看一个自定的执行系统命令的函数,代码如下:

  1. function execute($cfe) {  $res = ”;
  2. if ($cfe) {  if(function_exists(‘system’)) {
  3. @ob_start();  @system($cfe);
  4. $res = @ob_get_contents();  @ob_end_clean();
  5. } elseif(function_exists(‘passthru’)) {  @ob_start();
  6. @passthru($cfe);  $res = @ob_get_contents();
  7. @ob_end_clean();  } elseif(function_exists(‘shell_exec’)) {
  8. $res = @shell_exec($cfe);  } elseif(function_exists(‘exec’)) {
  9. @exec($cfe,$res);  $res = join(“n”,$res);
  10. } elseif(@is_resource($f = @popen($cfe,”r”))) {  $res = ”;
  11. while([email protected]($f)) {  $res .= @fread($f,1024);
  12. }  @pclose($f);
  13. }  }
  14. return $res;  }
时间: 2024-11-13 09:32:47

PHP执行系统命令的有几个常用的函数的相关文章

Python中执行系统命令常见的几种方法--转载

Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >>> import os >>> os.system('ls') chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSA

【初学】python执行系统命令四种方法比较

Python中执行系统命令常见的几种方法有 注意:以下实例代码在Python3.5下运行通过. 一.os.system方法 os.system(cmd) 在子终端运行系统命令,可以获取命令执行后的返回信息以及执行返回的状态 import osos.system('date')2018年 4月 8日 星期日 19时29分13秒 CST0 #运行状态号,0表示正确执行后返回两行结果,第一行是结果, 第二行是执行状态信息 二.os.popen方法 os.popen(cmd) 不仅执行命令而且返回执行后

windows linux 使用python执行系统命令并将结果保存到变量

最近需要用到os.system 发现不能赋值到变量 后查有更新的模块,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使用content=os.popen('help').read() 就能获取到了 import pyodbcimport sysimport osimport commands #python conn sql server2008R2conn = pyodbc.connect( driver='{sql serve

Esper调用Java代码执行系统命令

Esper语言是可以调用高级语言的静态方法的: 以调用Java的静态方法执行系统命令为例: select Runtime.getRuntime().exec(\"calc\"),avg(price) from " + product + ".win:length_batch(3) 完整代码可以参考如下链接: http://blog.csdn.net/luonanqin/article/details/9900295

Python执行系统命令的方法

Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 system(command) -> exit_statusExecute the command (a string) in a subshell. # 如果再命令行下执行,结果直接打印出来 1 >>> os.system('ls') 2 04101419778.CHM   bash      document  

java中执行系统命令

java程序中执行系统命令猛击下面的链接看看你就知道怎么用了 http://blog.csdn.net/a19881029/article/details/8063758 http://wuhongyu.iteye.com/blog/461477/ http://www.blogjava.net/fastzch/archive/2008/07/08/213477.html

在Loadrunner中如何用system函数执行系统命令

前提: windows 系统 实现功能:用 LR 中的system函数执行系统命令 相关功能:在LR中利用C函数建立文件,写文件,读文件. 主要相关函数:sprintf/fopen/fgetc/fread/fclose Action() { int count,total=0,i; char buffer[1000]; long file_stream; char fil 前提:windows系统 实现功能:用LR中的system函数执行系统命令 相关功能:在LR中利用C函数建立文件,写文件,读

执行系统命令

执行系统命令 os.system os.spawn* os.popen popen2.* commands.* 后面三个已经废弃,以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更加丰富的功能 call 执行命令,返回状态码. import subprocess ret1 = subprocess.call(["ls","-l"],shell=False) print ret1 ret2 = subprocess.call(

python Subprocess执行系统命令管道、读取结果【多进程,进程间管道通信】

# -*- coding:utf-8 -*- __author__ = 'magicpwn' import subprocess import sys reload(sys) sys.setdefaultencoding('utf-8') # 执行命令的两个函数,新建进程执行系统命令 s = subprocess.check_call('dir', shell=True) p = subprocess.call('dir', shell=True) print s, p # 执行命令并捕获系统命