📜  解释 shell_exec() 和 exec() 函数之间的区别(1)

📅  最后修改于: 2023-12-03 15:27:56.600000             🧑  作者: Mango

shell_exec() 和 exec() 函数之间的区别

在PHP中,有两个常见的执行Shell命令的函数,它们分别是shell_exec()和exec()。这两个函数都可以执行Shell命令,但是它们之间还是有一些区别的。

shell_exec()

shell_exec()是一个用来执行命令并返回输出结果的函数。它执行的命令是在shell环境中执行的,因此可以使用一些Shell命令和操作符。和exec()不同,shell_exec()可以将命令执行结果输出为一个字符串。

下面是一个示例:

$output = shell_exec('ls -l');
echo "<pre>$output</pre>";

上面的代码会在执行时调用Shell命令ls -l,并将执行结果储存在一个字符串中,最后将这个字符串输出。

exec()

exec()函数同样用于执行Shell命令并返回输出结果,但是它有一些特殊的参数。exec()函数可以将命令执行结果存储到一个数组中,这样就可以将输出分解到单独的字符串中,这个特点非常方便。exec()函数的第二个参数可以用来设置一个变量来接收命令的执行返回值。

示例:

$files = array();
$return_value = exec('ls -l', $files);
var_dump($files);

在这个示例代码中,exec()函数被用来执行命令ls -l,并将返回结果存储在了数组$files中,而变量$return_value则被用来存储exec()执行操作的返回值。

区别
  1. shell_exec()函数会将命令执行结果存储在一个字符串中,而exec()函数则将结果按行存储到一个数组中。
  2. exec()函数在执行成功时会返回0或者1,而shell_exec()则返回命令输出的字符串。
  3. exec()函数的第二个参数可以将执行结果存储到一个数组中,而shell_exec()则不提供这样的功能。

因此,如何选择一个适合的函数来执行Shell命令取决于所需要的数据类型和功能。如果需要一个字符串输出,那么就应该使用shell_exec(),如果需要将输出分解到多个字符串中,那么应该使用exec()函数。