PHP执行linux命令的6个函数

大数据
• 阅读 2594

一般情况下,很少会用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: $lastn";
?>
[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下的命令,我想应当还有

点赞
收藏
评论区
推荐文章
莎利亚 莎利亚
4年前
PHP学习笔记之PHP的函数应用
目录一、函数的定义二、自定义函数三、函数的工作原理和结构化编程四、PHP变量的范围五、声明及应用各种形式的PHP函数六、递归函数七、使用自定义函数库一、函数的定义一个被命名的、独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值。定义中的各部分如下:函数是被命名的:每个函数都
Wesley13 Wesley13
3年前
PHP命令行下的世界
PHP作为一门web开发语言,通常情况下我们都是在WebServer中运行PHP,使用浏览器访问,因此很少关注其命令行操作以及相关参数的使用,但是,特别是在类Unix操作系统上,PHP可以作为一门脚本语言执行与shell类似的处理任务。php命令行(CLI)参数详解查看PHP的所有命令行参数,使用phph命令。我们将会对大部分常用的
Stella981 Stella981
3年前
Happy WS 之 控制台
支持多行增加了几个函数,看结果吧0\.多行模式:任意数量的开始同等数量的<结束1\.文件系统函数cd lsdir2\.执行执行模版函数exec(tmpl)3\.错误行定位4\.错误信息默认不显示详情,使用showLastException()函数显示错误详情5\.变量/常量导入全局变量/
Stella981 Stella981
3年前
PHP7 升级指南(Windows)
PHP7Released了,号称提速了2倍,支持函数参数、函数返回指定类型,妈呀,等你好久了,记得以前在php5.4的升级决议中就提到,最后被否了,始终还是要加回来吧!判断php的变量类型,满满的都是泪啊!如果本地Windows仍在使用xampp(apache)之类的,请先按照以下操作:1\.修改apache加载php的配置Load
Wesley13 Wesley13
3年前
PHP基础之输出缓冲区基本概念、原理分析
一、概念在PHP运行的过程中,可以将会产生输出的函数或操作结果暂时保存在PHP的缓冲区,只有当缓冲区满了、或者PHP运行完毕、或者在必要时候进行输出,才会将数据输出到浏览器,此缓冲数据的区域称为PHP的输出缓冲区(OB)。二、原理①使用了缓冲区之后,当执行PHP的时候,如果碰到了echo、print\_r之类的会输出数据的代码(实际上许多函数都会
Stella981 Stella981
3年前
PHP通过exec执行git pull
目标项目没有使用Jenkins部署,使用的是GitlabECS,要实现代码的自动部署想法使用Gitlab的钩子,当某个分支的代码提交之后,访问一个URL,实现代码的自动部署。这里使用PHP的exec方法,执行“gitpull”操作Tips:这种方法不是百分百靠谱,万一代码冲突就......实现目的:访问h
Stella981 Stella981
3年前
JS 中的this指向问题和call、apply、bind的区别
this的指向问题一般情况下this对象指向调用函数的对象,全局环境中执行函数this对象指向window。functiona(){console.log(this);//输出函数a中的this对象}functionb(){};varc{name:"call"}
Wesley13 Wesley13
3年前
PHP调用外部程序的方法
很多情况下需要php调用其他程序如shell命令、shell脚本、可执行程序等等,此时需要使用到诸如exec/system/popen/proc\_open等函数,每种函数有各自适合使用的场景以及需要注意的地方。前提:PHP没有运行在安全模式如果PHP运行在安全模式下,那么在执行外部命令、打开文件、连接数据库、基于HTTP的认证这4
Stella981 Stella981
3年前
Linux内核学习笔记(3)
一、进程创建:  Unix下的进程创建很特别,与许多其他操作系统不同,它分两步操作来创建和执行进程:fork()和exec()。首先,fork()通过拷贝当前进程创建一个子进程;然后,exec()函数负责读取可执行文件并将其载入地址空间开始运行。1、fork():kernel/fork.c  在Linux系统中,
Wesley13 Wesley13
3年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
Stella981 Stella981
3年前
CI等MVC框架中为什么不能有index控制器的原因
因为类名称是index而方法又是index,这样index函数就是php4中的构造函数,即实例化类时,直接执行这个函数而没有执行父类的构造函数,也就没有初始化CI核心类。所以会提示没有定义属性或方法了。用index类名也可以,在publicfunctionindex()方法前加上,调用父类的构造方法publicfunction\_\
大数据
大数据
Lv1
翻被梨花冷看,人生苦恋天涯。
文章
3
粉丝
0
获赞
0