GVKun编程网logo

PHP执行linux命令6个函数代码实例(php 执行linux命令)

12

对于想了解PHP执行linux命令6个函数代码实例的读者,本文将是一篇不可错过的文章,我们将详细介绍php执行linux命令,并且为您提供关于7za-php执行linux命令解压文件的问题、cento

对于想了解PHP执行linux命令6个函数代码实例的读者,本文将是一篇不可错过的文章,我们将详细介绍php 执行linux命令,并且为您提供关于7za-php执行linux命令解压文件的问题、centos - php 用 exec 执行Linux命令时,返回 127 错误码、go如何执行linux命令、Java执行Linux命令的有价值信息。

本文目录一览:

PHP执行linux命令6个函数代码实例(php 执行linux命令)

PHP执行linux命令6个函数代码实例(php 执行linux命令)

一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数。以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec。其实有很多的,结合手册内容,介绍以下6个函数。

1,exec函数

<?php
$test = "ls /tmp/test"; //ls是linux下的查目录,文件的命令
exec($test,$array); //执行命令
print_r($array);
?>

返回结果如下:

[root@krlcgcms01 shell]# php ./exec.php
Array
(
[0] => 1001.log
[1] => 10.log
[2] => 10.tar.gz
[3] => aaa.tar.gz
[4] => mytest
[5] => test1101
[6] => test1102
[7] => weblog_2010_09
)

2,system函数

<?php
$test = "ls /tmp/test";
$last = system($test);
print "last: $last\n";
?>

返回结果:

[root@krlcgcms01 shell]# php system.php
1001.log
10.log
10.tar.gz
aaa.tar.gz
mytest
test1101
test1102
weblog_2010_09
last:weblog_2010_09

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";
$array = 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,shell_exec函数

<?php
$test = "ls /tmp/test";
$out = shell_exec($test);
echo $out;
?>

popen,passthru,proc_open,shell_exec的返回结果如下:

[root@krlcgcms01 shell]# php test.php
1001.log
10.log
10.tar.gz
aaa.tar.gz
mytest
test1101
test1102
weblog_2010_09

我能发现的就这几个函数,能执行linux下的命令,我想应当还有吧,欢迎大家补充。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • PHP通过bypass disable functions执行系统命令的方法汇总
  • PHP执行普通shell命令流程解析
  • PHP执行系统命令函数实例讲解
  • php伪协议实现命令执行详情

7za-php执行linux命令解压文件的问题

7za-php执行linux命令解压文件的问题

php7zalinux

linux的web目录下有个“pic.7z”压缩包和一个php文件a.php,压缩包中有一张图片 “图片_a.png”,a.php文件内容为 “”。
当我从命令行手输同样的解压命令或者执行php a.php都可以正常将图片解压到aaa目录且图片文件名正确,但是当我从浏览器访问a.php时,虽然也可以将图片解压出来,但是图片文件名却变成了“???_a.png”(不是编码不一致导致的显示问题,而是真正的乱码),请问这是怎么回事啊?(我在另一台服务器上这样试却没有任何问题,初步怀疑是服务器环境的问题...)

centos - php 用 exec 执行Linux命令时,返回 127 错误码

centos - php 用 exec 执行Linux命令时,返回 127 错误码

服务器centos,因为需要调用phantomjs,已经安装了phantomjs的二进制文件,并且,在putty上尝试了phantomjs --version能正常输出:1.9.8.
然后试了下:

exec("phantomjs --version", $o, $e);
echo $e;//返回127
登录后复制
登录后复制

很纳闷,再试了下:

立即学习“PHP免费学习笔记(深入)”;

exec("ls", $o, $e);
echo $e;//还是返回127
登录后复制
登录后复制

谷歌很久,有的人说要采用绝对路径,遂再试了下:

#which ls
/bin/ls
登录后复制
登录后复制

于是再在php中输入:

exec("/bin/ls", $o, $e);
echo $e;//还是返回127
登录后复制
登录后复制

查看php.ini,safe_mode=Off,disble_functions里也没有禁用exec()和system()等函数,按理说php应该有执行exec的权限啊,换成system(),shell_exec均是返回127,我快疯了,求大神解答,这个exec函数到底该杂用

回复内容:

服务器centos,因为需要调用phantomjs,已经安装了phantomjs的二进制文件,并且,在putty上尝试了phantomjs --version能正常输出:1.9.8.
然后试了下:

exec("phantomjs --version", $o, $e);
echo $e;//返回127
登录后复制
登录后复制

很纳闷,再试了下:

立即学习“PHP免费学习笔记(深入)”;

exec("ls", $o, $e);
echo $e;//还是返回127
登录后复制
登录后复制

谷歌很久,有的人说要采用绝对路径,遂再试了下:

#which ls
/bin/ls
登录后复制
登录后复制

于是再在php中输入:

exec("/bin/ls", $o, $e);
echo $e;//还是返回127
登录后复制
登录后复制

查看php.ini,safe_mode=Off,disble_functions里也没有禁用exec()和system()等函数,按理说php应该有执行exec的权限啊,换成system(),shell_exec均是返回127,我快疯了,求大神解答,这个exec函数到底该杂用

检查下你当前运行PHP脚本的用户
我用root用户测试了下,不会有什么错
exec 或者system 运行的命令,首先应该是当前运行脚本用户有执行此程序的权限

go如何执行linux命令

go如何执行linux命令

首先建立一个exec.Cmd类型的值,然后执行这个类型的Start方法就可以启动命令了,获取此命令的输出管道,这个管道类型是io.ReadCloser,通过管道获取输出内容。

package main

import (
  "bytes"
  "fmt"
  "io"
  "os/exec"
)


func main() {
  cmd0 := exec.Command("echo", "-n", "my first command")
  //启动命令
  if err := cmd0.Start(); err != nil {
  fmt.Printf("command can not start %s \n", err)
  return
  }

  //获取输出管道
  stdout0, err := cmd0.StdoutPipe()
  if err != nil {
  fmt.Printf("couldn''t stdout pipe for command %s \n", err)
  return
  }
  var outputBuf0 bytes.Buffer
  for {
  tempOutput := make([]byte, 2048)
  n, err := stdout0.Read(tempOutput)
  if err != nil {
    if err == io.EOF {
    break
    } else {
    fmt.Printf("couldn''t read data from pip %s \n", err)
    return
    }
  }
  if n &gt; 0 {
    outputBuf0.Write(tempOutput[:n])
  }
  }
  fmt.Printf("%s\n", outputBuf0.String())
}
登录后复制

以上就是go如何执行linux命令的详细内容,更多请关注php中文网其它相关文章!

Java执行Linux命令

Java执行Linux命令

public static Object execCmd(String cmd) {
		try {
			String[] cmdA = { "/bin/sh", "-c", cmd };
			System.out.println("===========start===cmd============="+cmd);
			Process process = Runtime.getRuntime().exec(cmdA);
//			System.out.println("===========readresult==start==========="+cmd);
			LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream()));
			StringBuffer sb = new StringBuffer();
			String line;
			while ((line = br.readLine()) != null) {
				System.out.println(line);
				sb.append(line).append("\n");
			}
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static void execShell(String shpath) {
		try {
			System.out.println("===========shpath=============" + shpath);
			Process ps = Runtime.getRuntime().exec(shpath);
			int exitValue = ps.waitFor();
			System.out.println("===========if 0 success;==========exitValue===" + exitValue);

			BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
			StringBuffer sb = new StringBuffer();
			String line;
			while ((line = br.readLine()) != null) {
				sb.append(line).append("\n");
			}
			String result = sb.toString();
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

    public static void main(String[] args) {
		execCmd("echo myccmd");
		execShell("/opt/cmd.sh");
	}

 

今天关于PHP执行linux命令6个函数代码实例php 执行linux命令的讲解已经结束,谢谢您的阅读,如果想了解更多关于7za-php执行linux命令解压文件的问题、centos - php 用 exec 执行Linux命令时,返回 127 错误码、go如何执行linux命令、Java执行Linux命令的相关知识,请在本站搜索。

本文标签: