手机版

如何在php中执行linux命令

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

前言

本文主要介绍如何在php中执行linux命令的相关内容。下面的话就不多说了,我们来看看详细的介绍

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

让我们从shell_exec开始

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

我们先试试。使用php执行一个shell命令,这就是mkdir testdir。

?php $ cmd=' mkdir testdirshell _ exec($ cmd);在执行php脚本之前,目录如下所示:

执行后,目录如下图所示,还有一个额外的testdir文件夹,它是由我们刚刚在php脚本中执行的shell命令生成的

如果shell命令执行失败会发生什么?

如果在执行shell命令时出现错误,下面的php代码还能运行吗?看下面的例子,我想执行的命令是读取并运行文件test.sh的内容,但是这个文件实际上并不存在。

?php $ cmd=' source test.shshell _ exec($ cmd);print _ r('-the end-\ n ');它的打印结果是:

sh:行0: source: test.sh:文件未找到-结束-

从打印的结果可以看出,即使运行shell命令时出现错误,也不会影响下面php代码的执行。因此,如果shell命令执行失败,我们就不能使用php的try-catch来捕获shell命令错误。

就像下面的代码一样,实际上你不能捕捉shell命令的错误

?php $ cmd=' source test.sh尝试{ shell _ exec($ cmd);print _ r('-the end-\ n ');} catch(异常$e) {echo 'error='。$ e-Getmessage();}其打印结果为:

sh:行0: source: test.sh:文件未找到-结束-

获取shell_exec的输出

看看官方文件中提到的shell_exec

让我们在第一个例子中采访

?php $ cmd=' mkdir testdir$ ret=shell _ exec($ cmd);var _ dump($ ret);打印结果是

因此,我认为,上面应该是一个没有任何输出的命令,而改成一个有输出的命令,比如下面的代码;

?php $ cmd=' echo $ SHELL$ ret=shell _ exec($ cmd);var _ dump($ ret);它的打印结果是:

字符串(10) '/bin/bash '

因此,如果您想在php中执行一个shell命令,并知道执行是成功还是失败,您可以在shell命令后添加21,并将错误输出到标准输出中。这样就可以判断执行是失败还是成功。例子如下:

?php $ cmd=' source test.sh 21$ 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方法的参数如下:$output是一个数组,$return_var是一个int值。当$return_var为0时,表示命令已成功执行。

string xec(string $ command[,array $ output [,int $ return _ var]])查看以下示例代码:

?PHP $ cmd=' ls-l/home ';exec($cmd,$result,$ var);var _ dump($ result);var _ dump($ var);打印结果如下:

再看看系统

这是系统的功能描述。当$return_var为0时,表示命令已成功执行。系统函数的返回是命令输出最后一行的内容

Stringsystem (string $ command [,int $ return _ var])查看以下示例代码:

?php $ cmd=' mkdir testsystem;$lastline=系统($cmd,$ var);var _ dump($ last line);var _ dump($ var);打印结果是:

字符串(0)“”int(0)

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

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

版权声明:如何在php中执行linux命令是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。