• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php中如何执行linux命令详解

    前言

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

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

    我们先从shell_exec来说

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

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

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

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

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


    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
    
    $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);

    打印结果如下:


    再看一下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)

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

    总结

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

    您可能感兴趣的文章:
    • CentOS 8.1下搭建LEMP(Linux+Nginx+MySQL+PHP)环境(教程详解)
    • linux安装php7的方法详解
    • Linux下安装PHP curl扩展的方法详解
    • Linux下 php7安装redis的方法
    • Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
    • Linux系统下为Nginx安装多版本PHP
    • centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)
    • PHP执行linux命令6个函数代码实例
    上一篇:laravel中的一些简单实用功能
    下一篇:PHP校验15位和18位身份证号的类封装
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php中如何执行linux命令详解 php,中,如何,执行,linux,命令,