设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP调用linux外部命令的例子

发布时间:2022-02-24 13:01 所属栏目:121 来源:互联网
导读:相信大家或多或少都用过AMH,Vestacp等vps面板,这些面板都是使用的php语言,从本质上来说就是php执行linux的外部命令。 PHP 为执行外部命令提供大量函数,其中包括 shell_exec()、exec()、passthru() 和 system()。这些命令是相似的,但为您运行的外部程序
  相信大家或多或少都用过AMH,Vestacp等vps面板,这些面板都是使用的php语言,从本质上来说就是php执行linux的外部命令。
 
  PHP 为执行外部命令提供大量函数,其中包括 shell_exec()、exec()、passthru() 和 system()。这些命令是相似的,但为您运行的外部程序提供不同的界面。所有这些命令都衍生一个子进程,用于运行您指定的命令或脚本,并且每个子进程会在命令输出写到标准输出 (stdout) 时捕捉它们。
 
  shell_exec函数
 
  说明:通过 shell 运行外部程序,然后以字符串的形式返回结果。
 
  语法:string shell_exec ( string $cmd )
 
  返回值: 字符串
 
  详细介绍
 
  shell_exec() 命令行实际上仅是反撇号 (`) 操作符的变体,通过该命令可以运行shell命令,然后以字符串的形式返回结果。
 
  示例代码
 
  统计当前目录下所有文件中的单词数量,并输出前五行。
 
  $results = shell_exec('wc -w *.txt | head -5');
  echo "
  ".$results . "
  “;
  ?>
  exec函数
 
  说明:与 shell_exec() 相似,返回输出的最后一行
 
  语法:string exec ( string $command [, array &$output [, int &$return_var ]] )
 
  返回值: 字符串
 
  详细介绍:
 
  本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若是 return_var 跟 output 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。
 
  实例代码:
 
  统计当前目录下所有文件中的单词数量,并输出前五行,但是实际上只输出了一行。
 
  $results = exec('wc -w *.txt | head -5');
  echo $results;
  
  #只会输出一行:
  #3847 myfile.txt
  ?>
  passthru()
 
  说明:passthru() 允许您运行外部程序,并在屏幕上显示结果。
 
  语法:void passthru ( string $command [, int &$return_var ] )
 
  返回值: 整数
 
  详细介绍:
 
  passthru() 允许您运行外部程序,并在屏幕上显示结果。您不需要使用 echo 或 return 来查看结果;它们会显示在浏览器上。您可以添加可选的参数,即保存从外部程序返回的代码的变量,比如表示成功的 0,这为调试提供更好的机制。
 
  实例代码:
 
  passthru('wc -w *.txt | head -5',$returnval);
  echo "
  ".$returnval;
  ?>
  system函数
 
  说明:执行外部程序并显示输出资料。
 
  语法:string system ( string $command [, int &$return_var ] )
 
  返回值: 字符串
 
  详细介绍
 
  system() 命令是一种混合体。它像 passthru() 一样直接输出从外部程序接收到的任何东西。它还像 exec() 一样返回最后一行,并使返回代码可用。
 
  示例代码
 
  system('wc -w *.txt | head -5');
  
  #输出如下:
  #123 file1.txt 332 file2.txt 444 file3.txt
  #and so on
  ?>
  小结:
 
  一般来说,exec() 命令比较常用;
 
  如果不关心结果,并且命令比较简单时,可以使用 shell_exec();
 
  如果仅需返回一个 shell 脚本,可以使用 passthru()。
 
  不过小编还是要说一句,没有必须使用php执行系统函数了,我们可以禁止掉了,在php.ini中我们如下写.
 
  disable_functions = proc_open,exec,passthru,shell_exec,system,popen
 
  就可以了。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读