php实现exec
PHP 使用 exec 函数执行外部命令
exec 是 PHP 中用于执行外部命令的函数,属于 exec 函数族的一部分(包括 system、passthru、shell_exec 等)。它适用于调用系统命令或脚本,并获取输出结果。
基本语法
string exec(string $command, array &$output = null, int &$return_var = null)
$command: 要执行的命令字符串。$output: 可选参数,用于存储命令输出的每一行(数组形式)。$return_var: 可选参数,用于存储命令的返回值(通常 0 表示成功)。
简单示例
执行 ls 命令并输出结果:
$output = [];
$return_var = null;
exec('ls', $output, $return_var);
print_r($output);
捕获返回值
检查命令是否执行成功:
exec('some_command', $output, $return_var);
if ($return_var === 0) {
echo "Command executed successfully.";
} else {
echo "Command failed with code: $return_var";
}
安全性注意事项
-
避免用户输入直接拼接命令
使用escapeshellarg或escapeshellcmd防止命令注入:$user_input = $_GET['input']; exec('ls ' . escapeshellarg($user_input), $output); -
限制命令权限
避免以高权限(如 root)执行命令,必要时使用sudo限制权限。 -
禁用危险函数
在生产环境中,可通过php.ini的disable_functions禁用exec等函数。
常见问题
- 无输出
检查命令是否存在,或尝试使用绝对路径(如/bin/ls)。 - 超时问题
长时间运行的命令需结合set_time_limit或异步处理。
替代方案
- 需要实时输出时,使用
passthru或system。 - 仅需命令结果时,使用
shell_exec。
注意:exec 的行为受服务器环境和 PHP 配置影响,部分主机可能禁用此函数。







