Php提供基于web的功能来开发web应用程序。但它也提供了与系统相关的脚本和执行功能。这个 exec()
函数用于从PHP脚本或应用程序执行外部二进制文件或程序。在本教程中,我们将研究 exec()
返回值、stderr、shellu exec等函数。
exec()函数语法
PHP exec()
语法如下,其中单个参数是必需的,其他参数是可选的。
exec(string COMMAND, array OUTPUT, int RETURN_VARIABLE);
-
COMMAND
是要用exec()函数执行的命令。命令应该是字符串值或变量。命令是强制参数。 -
OUTPUT
是命令执行的输出。输出是一个可以容纳多个值或行的数组。输出是可选的,可以省略。 -
RETURN_VARIABLE
是给定命令的返回值。返回值通常是命令的进程状态。返回值是一个整数,可以选择使用。
运行外部系统二进制或应用程序
我们将从一个简单的例子开始。我们将提供要在本地操作系统上运行的命令。在本例中,我们将创建一个名为 data
. 此目录将在当前工作路径中创建。我们也可以像下面这样显式地指定路径 /var/data
.
exec("mkdir data");
我们可以用Linux列出创建的目录 file
命令如下。我们还将提供目录名,因为 exec()
函数将只显示输出的最后一行。我们将使用 echo
打印命令输出。
echo exec("file data");

打印输出
我们已经看了打印输出,但我想解释更多关于打印输出。exec()函数的输出或返回可以用echo打印,但打印的部分只能是最后一行。所以在多行输出中,我们看不到 echo
. 如果我们想看到整个输出,我们应该使用 system()
下面将解释的功能。
相关文章: Linux尾部命令教程
但是我们可以用 output
参数如下。在本例中,我们将把命令输出放到 o
. 输出参数是数组类型,因此我们将使用 print_r
打印输出。
exec("ls",$o);
print_r($o);
![图片[2]-如何使用PHP Exec和示例执行Shell命令?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/03/poftut_image-211.png)
从输出中我们可以看到,执行的ls命令输出存储在名为 美元 作为一个数组。每个项目都是位于当前工作目录下的文件或文件夹。
将返回值赋给变量
使用 echo
不是获取返回值的可靠方法。我们可以使用变量来设置返回值并使用我们想要的任何东西。在本例中,我们将流程返回值设置为 v .
exec("ls",$o,$v);
echo $v;

以字符串形式返回完整的输出,其中包含shellu exec()
PHP语言提供了不同的函数作为 exec()
. 我们可以使用 shell_exec()
函数,它将创建一个shell进程并运行给定的命令。在这个例子中,我们将看 ls
命令和打印输出。与 shell_exec()
函数我们无法获得shell进程或命令的返回值。
echo shell_exec('ls');

PHP shellu exec()示例
在这一部分中,我们将给出更多关于PHP shell_exec()函数的示例。我们将运行不同的系统和Linux命令,如 date
, whoami
, ifconfig
和 mkdir
.
echo shell_exec('date');
echo shell_exec('whoami');
echo shell_exec('ifconfig');
![图片[5]-如何使用PHP Exec和示例执行Shell命令?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/03/poftut_image-212.png)
用system()返回完整的字符串输出
另一个类似的功能是 system()
. system()
函数直接显示输出而不使用 echo
或 print
. 在本例中,我们将运行 ls
再次命令。
system('ls');

exec()函数与shellu exec()函数
PHP还提供 shell_exec()
与exec()函数非常相似的函数。主要区别在于shell_exec()函数接受单个参数,该参数是一个命令,并以字符串形式返回输出。
//Execude command in the shell with PHP exec() function
//put the output to the $output variable
exec("uname -a",$output,$return_val);
print_r($output);
//Execude command in the shell with PHP shell_exec() function
//put the output into $out variable
$out = shell_exec("uname -a");
echo $out;
