📜  PHP | shell_exec() 与 exec()函数(1)

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

PHP | shell_exec() 与 exec()函数

在 PHP 中,有一些内置函数可用于在代码中执行外部命令。其中,shell_exec()exec() 是两个常用的函数。

shell_exec()

shell_exec() 函数用于在 shell 中执行外部命令,并返回命令的输出结果。该函数返回的是命令的输出结果字符串,如果命令执行失败则返回 null

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

上述代码执行了 ls -la 命令,并将结果输出到 HTML 页面。需要注意的是,shell_exec() 函数只返回命令标准输出的结果,不返回标准错误输出的结果。如果需要同时获取标准输出和标准错误输出,请使用 exec() 函数。

exec()

exec() 函数也用于在 shell 中执行外部命令,但与 shell_exec() 不同,它返回命令执行的结果和状态码。该函数有三个参数,第一个参数是要执行的命令,第二个参数是一个数组,用于存储命令输出的每一行字符串,第三个参数可选,用于存储命令的状态码。如果命令执行成功,则返回最后一行输出字符串。

$command = 'ls -la';
$output = array();
$status = null;
exec($command, $output, $status);
echo "<pre>";
print_r($output);
echo "</pre>";
echo "command status: $status";

上述代码执行了 ls -la 命令,并将结果存储到 $output 数组中,最后输出结果和状态码。需要注意的是,exec() 函数会将命令的标准错误输出转换为 PHP 的错误信息。如果命令执行失败,则会在 PHP 中生成一个 E_WARNING 的错误信息。

安全性考虑

在使用 shell_exec()exec() 函数时,需要注意安全性问题。因为这两个函数可以执行任意的 shell 命令,所以如果不对输入进行过滤和验证,可能会导致代码注入或者执行恶意命令的安全问题。所以,在使用这两个函数时,一定要对输入参数进行严格的验证和过滤,避免恶意输入导致的安全问题。