• 售前

  • 售后

热门帖子
入门百科

php中如何执行linux命令详解

[复制链接]
亲亲阳光非 显示全部楼层 发表于 2021-10-26 13:16:23 |阅读模式 打印 上一主题 下一主题
媒介
本文紧张给各人介绍了关于在php中怎样实验linux命令的相关内容,下面话不多说了,来一起看看具体的介绍吧
php怎样实验某个命令 ,官方手册在这里
我们先从shell_exec来说

怎样使用shell_exec在php里面实验shell命令

先来试一下,使用php实验某个shell命令,该命令是mkdir testdir。
  1. <?php
  2. $cmd = 'mkdir testdir';
  3. shell_exec($cmd);
复制代码
在这个php脚本实验之前,目录里面是这样子的:

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



shell命令实验失败会怎样?

假如说实验shell命令的时候堕落了,背面的php代码还能运行吗?看下面这个例子,我要实验的命令是读取并运行test.sh这个文件里面的内容,但是这个文件实际是不存在的。
  1. <?php
  2. $cmd = 'source test.sh';
  3. shell_exec($cmd);
  4. print_r("---the end---\n");
复制代码
它的打印结果是:
  1. sh: line 0: source: test.sh: file not found
  2. ---the end---
复制代码
可以从打印结果看到,即使运行某个shell命令的时候会堕落,不会影响下面的php代码的实验。所以,如果shell命令实验失败了,我们也没办法用php的try-catch是捕捉不到shell命令的错误。
就比如下面的代码,实际上catch不到shell命令的错误
  1. <?php
  2. $cmd = 'source test.sh';
  3. try {
  4. shell_exec($cmd);
  5. print_r("---the end---\n");
  6. } catch (Exception $e) {
  7. echo 'error=' . $e->getMessage();
  8. }
复制代码
它的打印结果是:
  1. sh: line 0: source: test.sh: file not found
  2. ---the end---
复制代码
获取shell_exec的输出

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


我们在第一个例子里面试一下
  1. <?php
  2. $cmd = 'mkdir testdir';
  3. $ret = shell_exec($cmd);
  4. var_dump($ret);
复制代码
打印出来的结果是
  1. NULL
复制代码
所以,我想,上面这个应该是命令没有任何输出,换一个有输出的命令,如下面代码;
  1. <?php
  2. $cmd = 'echo $SHELL';
  3. $ret = shell_exec($cmd);
  4. var_dump($ret);
复制代码
它的打印结果是:
  1. string(10) "/bin/bash
  2. "
复制代码
所以,如果想要用php实验shell命令,而且知道到底实验成功还是失败,那么可以在这个shell命令的背面加上2>&1,把错误输出到尺度输出。这样就可以判定是实验失败还是实验成功。示例如下:
  1. <?php
  2. $cmd = 'source test.sh 2>&1';
  3. $ret = shell_exec($cmd);
  4. if (empty(ret)) {
  5. print_r("---success---\n");
  6. } else {
  7. print_r("---failed---\n");
  8. }
  9. print_r("---the end---\n");
复制代码
当然,官方手册里面除了有shell_exec,还有其他的,比如说exec。
下面就来说说exec

exec方法的参数是这样的,$output是一个数组,$return_var是一个int型的值。$return_var是0的时候表示命令实验成功。
  1. string exec ( string $command [, array &$output [, int &$return_var ]] )
复制代码
看下面的示例代码:
  1. <?php
  2. $cmd = 'ls -l /home';
  3. exec($cmd, $result, $var);
  4. var_dump($result);
  5. var_dump($var);
复制代码
打印结果如下:


再看一下system

这是system的函数阐明,$return_var是0的时候表示命令实验成功。system函数的返回是命令的输出的末了一行的内容
  1. string system ( string $command [, int &$return_var ] )
复制代码
看下面的示例代码:
  1. <?php
  2. $cmd = 'mkdir testsystem';;
  3. $lastline = system($cmd, $var);
  4. var_dump($lastline);
  5. var_dump($var);
复制代码
打印结果为:
  1. string(0) ""
  2. int(0)
复制代码
还有其他的,就临时不介绍了
总结
以上就是这篇文章的全部内容了,渴望本文的内容对各人的学习或者工作具有肯定的参考学习价值,如果有疑问各人可以留言交流,谢谢各人对脚本之家的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作