如何使用PHP Exec和示例执行Shell命令?

Php提供基于web的功能来开发web应用程序。但它也提供了与系统相关的脚本和执行功能。这个 exec() 函数用于从PHP脚本或应用程序执行外部二进制文件或程序。在本教程中,我们将研究 exec() 返回值、stderr、shellu exec等函数。

null

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");
Run External System Binary or Application
运行外部系统二进制或应用程序

打印输出

我们已经看了打印输出,但我想解释更多关于打印输出。exec()函数的输出或返回可以用echo打印,但打印的部分只能是最后一行。所以在多行输出中,我们看不到 echo . 如果我们想看到整个输出,我们应该使用 system() 下面将解释的功能。

相关文章: Linux尾部命令教程

但是我们可以用 output 参数如下。在本例中,我们将把命令输出放到 o . 输出参数是数组类型,因此我们将使用 print_r 打印输出。

exec("ls",$o);
print_r($o);
图片[2]-如何使用PHP Exec和示例执行Shell命令?-yiteyi-C++库
PHP exec输出

从输出中我们可以看到,执行的ls命令输出存储在名为 美元 作为一个数组。每个项目都是位于当前工作目录下的文件或文件夹。

将返回值赋给变量

使用 echo 不是获取返回值的可靠方法。我们可以使用变量来设置返回值并使用我们想要的任何东西。在本例中,我们将流程返回值设置为 v .

exec("ls",$o,$v);
echo $v;
Assign Return Value into Variable
将返回值赋给变量

以字符串形式返回完整的输出,其中包含shellu exec()

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

echo shell_exec('ls');
Return Complete Output as String with shell_exec()
以字符串形式返回完整的输出,其中包含shellu exec()

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++库
PHP shellu exec()示例

用system()返回完整的字符串输出

另一个类似的功能是 system() . system() 函数直接显示输出而不使用 echo print . 在本例中,我们将运行 ls 再次命令。

 system('ls');
Return Complete Output as String with system()
用system()返回完整的字符串输出

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;
exec() Function vs shel_exec() Function
exec()函数与shelu exec()函数

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享