php中如何执行linux命令详解


Posted in PHP onNovember 06, 2018

前言

本文主要给大家介绍了关于在php中如何执行linux命令的相关内容,下面话不多说了,来一起看看详细的介绍吧

php如何执行某个命令 ,官方手册在这里

我们先从shell_exec来说

如何使用shell_exec在php里面执行shell命令

先来试一下,使用php执行某个shell命令,该命令是mkdir testdir。

<?php

$cmd = 'mkdir testdir';
shell_exec($cmd);

在这个php脚本执行之前,目录里面是这样子的:

php中如何执行linux命令详解

执行之后,目录里面是如下图所示,多了一个testdir文件夹,这是通过我们刚刚在php脚本里面执行shell命令生成的

php中如何执行linux命令详解

shell命令执行失败会如何?

假如说执行shell命令的时候出错了,后面的php代码还能运行吗?看下面这个例子,我要执行的命令是读取并运行test.sh这个文件里面的内容,但是这个文件实际是不存在的。

<?php

$cmd = 'source test.sh';

shell_exec($cmd);

print_r("---the end---\n");

它的打印结果是:

sh: line 0: source: test.sh: file not found
---the end---

可以从打印结果看到,即使运行某个shell命令的时候会出错,不会影响下面的php代码的执行。所以,如果shell命令执行失败了,我们也没办法用php的try-catch是捕获不到shell命令的错误。

就比如下面的代码,实际上catch不到shell命令的错误

<?php

$cmd = 'source test.sh';

try {

shell_exec($cmd);

print_r("---the end---\n");

} catch (Exception $e) {
echo 'error=' . $e->getMessage();
}

它的打印结果是:

sh: line 0: source: test.sh: file not found
---the end---

获取shell_exec的输出

看一下官方文档里面提过的shell_exec

php中如何执行linux命令详解

我们在第一个例子里面试一下

<?php

$cmd = 'mkdir testdir';
$ret = shell_exec($cmd);
var_dump($ret);

打印出来的结果是

NULL

所以,我想,上面这个应该是命令没有任何输出,换一个有输出的命令,如下面代码;

<?php

$cmd = 'echo $SHELL';
$ret = shell_exec($cmd);
var_dump($ret);

它的打印结果是:

string(10) "/bin/bash
"

所以,如果想要用php执行shell命令,并且知道到底执行成功还是失败,那么可以在这个shell命令的后面加上2>&1,把错误输出到标准输出。这样就可以判断是执行失败还是执行成功。示例如下:

<?php

$cmd = 'source test.sh 2>&1';

$ret = shell_exec($cmd);
if (empty(ret)) {
print_r("---success---\n");
} else {
print_r("---failed---\n");
}

print_r("---the end---\n");

当然,官方手册里面除了有shell_exec,还有其他的,比如说exec。

下面就来说说exec

exec方法的参数是这样的,$output是一个数组,$return_var是一个int型的值。$return_var是0的时候表示命令执行成功。

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

看下面的示例代码:

<?php

$cmd = 'ls -l /home';
exec($cmd, $result, $var);
var_dump($result);
var_dump($var);

打印结果如下:

php中如何执行linux命令详解

再看一下system

这是system的函数说明,$return_var是0的时候表示命令执行成功。system函数的返回是命令的输出的最后一行的内容

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

看下面的示例代码:

<?php

$cmd = 'mkdir testsystem';;

$lastline = system($cmd, $var);
var_dump($lastline);
var_dump($var);

打印结果为:

string(0) ""
int(0)

还有其他的,就暂时不介绍了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
用Php实现链结人气统计
Oct 09 PHP
针对初学PHP者的疑难问答(1)
Oct 09 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
php变量范围介绍
Oct 15 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
调整PHP的性能
Oct 30 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
php session的应用详细介绍
Mar 22 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
laravel中的一些简单实用功能
Nov 03 #PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 #PHP
yii2 上传图片的示例代码
Nov 02 #PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 #PHP
php 调用百度sms来发送短信的实现示例
Nov 02 #PHP
Linux下 php7安装redis的方法
Nov 01 #PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 #PHP
You might like
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python计算一个序列的平均值的方法
2015/07/11 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
python进度条显示之tqmd模块
2020/08/22 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
军训心得体会
2013/12/31 职场文书
干部考核评语
2014/04/29 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
唐山大地震观后感
2015/06/05 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python