对于想了解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命令)
- 7za-php执行linux命令解压文件的问题
- centos - php 用 exec 执行Linux命令时,返回 127 错误码
- go如何执行linux命令
- Java执行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命令解压文件的问题
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 错误码
服务器
然后试了下:
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命令
首先建立一个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 > 0 { outputBuf0.Write(tempOutput[:n]) } } fmt.Printf("%s\n", outputBuf0.String()) }
以上就是go如何执行
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命令的相关知识,请在本站搜索。
本文标签: