如何在php中执行linux命令
前言
本文主要介绍如何在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或者邮箱删除。