php调用linux系统命令_php 调用linux命令 - CSDN
精华内容
参与话题
  • ... //ls是linux下的查目录,文件的命令  exec($test,$array); //执行命令  print_r($array);  ?> 2、system函数  <?php  $test = "ls /tmp/test"; ...

    1、exec函数

      <?php

      $test = "ls /tmp/test";   //ls是linux下的查目录,文件的命令

      exec($test,$array);       //执行命令

      print_r($array);

      ?>

    2、system函数

      <?php

      $test = "ls /tmp/test";

      $last = system($test);

      print "last: $last\n";

      ?>

    3、passthru函数

      <?php

      $test = "ls /tmp/test";

      passthru($test);

      ?>

    4、popen函数

      <?php

      $test = "ls /tmp/test";

      $fp = popen($test,"r");  //popen打一个进程通道

      while (!feof($fp)) {      //从通道里面取得东西

      $out = fgets($fp, 4096);

      echo  $out;         //打印出来

      }

      pclose($fp);

      ?>

    5、proc_open函数

      <?php

      $test = "ls /tmp/test";

      $arrayarray =   array(

      array("pipe","r"),   //标准输入

      array("pipe","w"),   //标准输出内容

      array("pipe","w")    //标准输出错误

      );

      $fp = proc_open($test,$array,$pipes);   //打开一个进程通道

      echo stream_get_contents($pipes[1]);    //为什么是$pipes[1],因为1是输出内容

      proc_close($fp);

      ?>

    6、proc_open函数

      <?php

      $test = "ls /tmp/test";

      $arrayarray =   array(

      array("pipe","r"),   //标准输入

      array("pipe","w"),   //标准输出内容

      array("pipe","w")    //标准输出错误

      );

      $fp = proc_open($test,$array,$pipes);   //打开一个进程通道

      echo stream_get_contents($pipes[1]);    //为什么是$pipes[1],因为1是输出内容

      proc_close($fp);

      ?>

    7、shell_exec函数

      <?php

      $test = "ls /tmp/test";

      $out = shell_exec($test);

      echo $out;

      ?>


    展开全文
  • PHP如何调用Linux系统下的命令

    千次阅读 2018-09-01 15:49:58
    在编程开发过程中,有时候难免会需要调用Linux系统下的 Shell 命令来辅助完成一些相关的操作,那么在 PHP 编程开发中如何才能调用系统下的shell命令呢? 下面介绍3种调用的方法: shell_exec( )、system( )、exec...

    【导读】

    在编程开发过程中,有时候难免会需要调用Linux系统下的 Shell 命令来辅助完成一些相关的操作,那么在 PHP 编程开发中如何才能调用系统下的shell命令呢?

    下面介绍3种调用的方法:  shell_exec( )、system( )、exec( )

    【实际操作】

    (1)shell_exec( "command")

    功能:将指令传至系统的shell中执行,并返回其执行结果。

    例子:

    <?php
    $result = shell_exec("ls");
    echo $result;
    ?>

    (2)system("command", $out)

    功能:将指令传至系统的shell中执行,并返回(显示)结果。

    返回:$out参数为可选参数,加载时会返回命令的" 执行结果 "和" 执行状态码 ",状态码: 0:成功,1:失败!

    例子:

    <?php 
    $a = system("dir", $out); 
    print_r($a); 
    print_r($out);
    ?> 

    (3)exec("command", $out, $status)

    功能:将指令传至系统的shell中执行,结果返回到$out中,$status为执行状态【0:成功,1:失败】。

    例子:

    <?php 
    $a = exec("ls",$out,$status); 
    print_r($a); 
    print_r($out); 
    print_r($status); 
    ?> 

    PS:执行时,注意文件的权限问题。

    展开全文
  • PHPlinux上执行系统命令

    千次阅读 2016-07-18 10:45:36
    1)exec():string exec ( string $command [, array &$output [, int &$return_var ] )说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的...

    方法一:用PHP提供的专门函数(四个):
    1)exec():

    string exec ( string $command [, array &$output [, int &$return_var ] )

    说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时清空这个数组unset($output),以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0

    <?php
        // 输出运行中的 php/httpd 进程的创建者用户名
        // (在可以执行 "whoami" 命令的系统上)
        echo exec('whoami');
    ?>

    2)system():

    string system ( string $command [, int &$return_var ] )

    说明: system和exec的区别在于,system在执行系统外部命令时,它执行给定的命令,输出和返回结果。成功
    则返回命令输出的最后一行, 失败则返回 FALSE。第二个参数是可选的,用来得到命令执行后的状态码。

    <?php
        $res = system("pwd",$result);
        print $result;//输出命令的结果状态码
        print $res;//输出命令输出的最后一行
    
    ?>

    关于第二个参数结果状态码的简单介绍:
    如果返回0是运行成功
    在Bash中,当错误发生在致命信号时,bash会返回128+signal number做为返回值。
    如果找不到命令,将会返回127。
    如果命令找到了,但该命令是不可执行的,将返回126。
    除此以外,Bash本身会返回最後一个指令的返回值。
    若是执行中发生错误,将会返回一个非零的值。
    Fatal Signal : 128 + signo
    Can’t not find command : 127
    Can’t not execute : 126
    Shell script successfully executed : return the last command exit status
    Fatal during execution : return non-zero

    3)passthru():

    void passthru ( string $command [, int &$return_var ] )

    说明: passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。

    exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。
    <?php
        header("Content-type:image/gif");
        passthru("/usr/bin/ppm2tiff  /usr/share/tk8.4/demos/images/teapot.ppm");
    ?>

    4)shell_exec():

    string shell_exec ( string $cmd )

    说明: 直接执行命令$cmd,将完整的命令输出以字符串的方式返回。如果执行过程中发生错误或者进程不产生
    输出,则返回 NULL。所以,使用本函数无法通过返回值检测进程是否成功执行。 如果需要检查进程执行的退
    出码,请使用 exec() 函数。

    <?php
        $output = shell_exec('ls -lart');
        echo "<pre>$output</pre>";
    ?>

    方法二:反撇号:
    原型: 反撇号`(和~在同一个键)执行系统外部命令,相当于 shell_exec
    说明: 在使用这种方法执行系统外部命令时,要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。

    <?php
        echo `dir`; 
    ?>

    用户自定义输入命令转义:
    若命令需要用户输入,此时为了安全应该使用以下方法对用户输入命令或参数进行转义

    1、shell 元字符转义

    string escapeshellcmd ( string $command )
    
    参数说明:
    command   要转义的命令。
    返回       转义后的字符串。

    除去了字符串中的特殊符号,可以防止使用者耍花招来破解该服务器系统。
    escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。

    反斜线(\)会在以下字符之前插入: #&;`|*?~<>^()[]{}$, \x0A 和 \xFF。 ’ 和 ” 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 都会被空格代替。

    实例:

    <?php
        // 我们故意允许任意数量的参数
        $command = './configure '.$_POST['configure_options'];
    
        $escaped_command = escapeshellcmd($command);
    
        system($escaped_command);
    ?>

    escapeshellcmd() 应被用在完整的命令字符串上。 即使如此,攻击者还是可以传入任意数量的参数。 请使用 escapeshellarg() 函数 对单个参数进行转义。

    2、shell 参数转义

    string escapeshellarg ( string $arg )
    
    arg :需要被转码的参数。
    
    返回值:转换之后字符串。
    

    escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。
    实例:

    <?php
        system('ls '.escapeshellarg($dir));
    ?>
    展开全文
  • PHP执行linux系统命令的三个基本函数 system();函数 说明:执行外部程序并显示输出资料。 语法:string system(string command, int [return_var]); 返回值: 字符串 详细介绍: 本函数就像是 C 语中的...
     PHP执行linux系统命令的三个基本函数

    system();函数

    说明:执行外部程序并显示输出资料。
    语法:string system(string command, int [return_var]);
    返回值: 字符串

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

    实例代码:
    1. <?php
    2. $last_line = system('ls', $retval);
    3. echo 'Last line of the output: ' . $last_line;
    4. echo '<hr />Return value: ' . $retval;
    5. ?>
    复制代码
    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
    2. echo exec('whoami');
    3. ?>
    复制代码
    popen();函数

    说明:打开文件。
    语法:int popen(string command, string mode);
    返回值: 整数

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

    实例代码:
    1. <?
    2. $fp = popen( "/bin/ls", "r" );
    3. ?>
    展开全文
  • 先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下。下面我将详细介绍:  PHP中提供了几个调用linux命令的函数,exec、system、passthru,...
  • Linux strace、pstack 命令 使用详解

    千次阅读 2015-04-05 19:43:13
    Linux strace、pstack 命令 使用详解strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息。可谓是 linux 下的调试利器,不仅可以用来找程序错误,系统为什么挂死了...
  • 使用popen和system阻塞进程的区别

    万次阅读 2014-11-19 13:56:07
    popen和system都可以执行外部命令。 popen相当于是先创建一个管道,fork,关闭管道的一端,执行exec,返回一个标准的io文件指针。 system相当于是先后调用了fork, exec,waitpid来执行外部命令 popen本身是...
  • 在本机上想通过shell脚本执行远程机器上的命令,其实很简单,只要在ssh 的后面加上 #!/bin/bash ssh root@192.168.1.102 ####从这里开始都是在远程机器上执行命令啦 cd /tmp/test/ rm -f test.txt cat ...
  • c语言调用Linux命令--很有效果

    千次阅读 2017-02-08 14:06:17
    execl等等类似的函数都可以执行任何shell下的命令。 #include  int main(){ system("ls -l"); return 1; } 或者 int execl(const char *path, const char *arg, ...); int execl
  • 内核版本升级和添加Linux系统调用

    万次阅读 2013-12-16 23:15:53
    一、 系统调用简介所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门陷入(gate trap)实现。系统调用就是用户空间应用...
  • UNIX/Linux系统取证之信息采集案例

    千次阅读 2016-06-22 15:32:14
    在UNIX/Linux系统取证中,及时收集硬盘的信息至关重要,《Unix/Linux网络日志分析与流量监控》一书中,将详细讨论各种常见系统进程系统调用及镜像文件获取方法。下面简单举几个例子。
  • PHP代码内执行Linux命令

    千次阅读 2018-01-11 22:14:02
    开发中遇到一种问题,需要在php函数中运行Linux系统代码,以下推荐2种方法,exec()函数和system()函数 一、exec可以把执行的结果全部返回到output函数里(数组),output函数里(数组),status是执行的状态 0为成功 1为...
  • linux sftp远程连接命令

    千次阅读 2017-11-26 10:13:49
    linux sftp远程连接命令  sftp -oPort=60001 root@192.168.0.254  使用-o选项来指定端口号。  -oPort=远程端口号  sftp> get /var/www/fuyatao/index.php /home/fuyatao/  这条语句将从远程主机的 /var/...
  • PHP的exec()函数用法详解

    万次阅读 2017-09-10 11:31:37
    先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下。下面我将详细介绍:  PHP中提供了几个调用linux命令的函数,exec、system、passthru,...
  • golang执行系统命令

    千次阅读 2019-01-24 09:54:39
    因为有时我们需要调用系统中现有的命令来完成任务, 比如调用ffmpeg来对视频裁剪, 转码等. 像常见的, PHP中的system()函数, C语言中的system()函数、exec函数族等, Nodejs中的child_process.exec()方法…, 这些在...
  • linux下如何执行PHP脚本

    千次阅读 2018-04-27 09:19:24
    linux下如何执行PHP脚本在 Linux 下执行 php 脚本时通常是可以使用以下命令:1 #/usr/local/php/bin/php test.php 为简化输入可把此php执行程序 copy到系统命令目录下:1 #cp /usr/local/php/bin/php /usr/sbin/...
  • 在代码复用及可维护性方面,函数有着巨大的优势,因此,把常用功能封装成函数是一件非常平常的事。shell脚本中,怎么定义函数及使用函数呢? 函数定义: ...函数调用: func_name parm  函数
  • Linux性能测试 strace命令

    万次阅读 2017-04-24 15:50:11
    早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符,却十有八九看不出个...
  • 问题 今天发现在使用定时器的时候,执行一个shell脚本,打印日志正常...验证方式:进入系统控制台,然后直接调用脚本,验证脚本正常。排除脚本本身问题。 2、判断应该问题来自于权限 验证方式:进入控制台,查看执行
  • linux 让程序在后台执行

    万次阅读 2018-07-13 10:18:30
    1. 执行命令后加 &amp; 符号,缺点客户端关了,也会停止执行 后台执行:php cli.php admin/index &amp; 显示到前台用命令:fg 又让在后台执行命令:Ctrl+z2. nohup 命令 &amp; , 客户端关了,...
1 2 3 4 5 ... 20
收藏数 55,938
精华内容 22,375
关键字:

php调用linux系统命令