PHP怎么执行Shell命令_exec与shell_exec区别说明【说明】

张开发
2026/4/14 0:17:16 15 分钟阅读

分享文章

PHP怎么执行Shell命令_exec与shell_exec区别说明【说明】
exec只返回最后一行输出且需数组参数捕获全部结果shell_exec返回完整stdout字符串二者均不捕获stderr均存在RCE风险应严格过滤输入或改用proc_open。exec 和 shell_exec 本质区别在哪它们都调用系统 shell 执行命令但返回值处理逻辑完全不同exec 默认只返回**最后一行输出**且不自动捕获完整输出而 shell_exec 返回**整个命令的标准输出字符串**不含 stderr除非重定向。常见错误现象用 exec(ls -l) 想看全部文件列表结果只拿到最后一行 —— 这不是 bug是设计如此。exec 的第二个参数数组变量才是它真正“收集全部输出”的方式不传就丢数据shell_exec 更接近直觉适合简单取结果比如 shell_exec(date)两者都不自动处理 stderr要捕获错误得手动加 21例如 shell_exec(ls /noexist 21)什么时候该用 exec 而不是 shell_exec当你需要同时获取命令退出码、控制输出截断、或边执行边处理输出时exec 更灵活。使用场景监控长时间运行的命令如 ping -c 4 example.com或者需要判断成功与否再分支处理。立即学习“PHP免费学习笔记深入” Ideogram Ideogram是一个全新的文本转图像AI绘画生成平台擅长于生成带有文本的图像如LOGO上的字母、数字等。

更多文章