php实现cmd
PHP 执行 CMD 命令的方法
在 PHP 中可以通过多种方式执行系统命令(CMD),以下是常见的几种方法:
使用 exec() 函数
exec() 函数用于执行外部程序并返回最后一行输出。
$output = exec('dir');
echo $output;
- 优点:简单直接
- 缺点:仅返回最后一行结果
使用 shell_exec() 函数
shell_exec() 返回命令的完整输出。
$output = shell_exec('ipconfig');
echo "<pre>$output</pre>";
- 适用场景:需要获取完整命令输出时
- 安全提示:需注意命令注入风险
使用 system() 函数
system() 执行命令并直接输出结果。
system('ping 127.0.0.1');
- 特点:实时输出执行过程
- 注意:返回值是命令的最后一行
使用 passthru() 函数
passthru() 直接输出原始二进制数据。
passthru('ffmpeg -i input.mp4 output.avi');
- 典型用途:处理二进制数据流
- 适用场景:图像/视频处理等
使用 proc_open() 函数
proc_open() 提供更精细的进程控制。
$descriptors = [
0 => ["pipe", "r"], // stdin
1 => ["pipe", "w"], // stdout
2 => ["pipe", "w"] // stderr
];
$process = proc_open('cmd', $descriptors, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], 'echo Hello');
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
}
- 优势:支持双向IO交互
- 复杂度:较高但更灵活
安全注意事项
-
始终对用户输入进行过滤
$clean_cmd = escapeshellcmd($_GET['cmd']); system($clean_cmd); -
避免直接执行用户提交的命令
-
在共享主机环境下需特别谨慎
Windows 系统特定命令
在Windows环境下可执行特殊命令:
// 获取系统信息
system('systeminfo');
// 网络诊断
shell_exec('ping google.com -n 4');
// 服务管理
exec('net start');
调试技巧
-
检查函数是否可用:
if (function_exists('exec')) { echo "exec() is available"; } -
查看错误输出:

exec('invalid_command 2>&1', $output); print_r($output);
根据具体需求选择合适的方法,考虑安全性和功能要求。对于复杂任务建议使用proc_open(),简单命令可使用shell_exec()或exec()。






