PHP中的system(),exec()和shell_exec()有什么区别?

Goo*_*bot 64 php shell system exec shell-exec

可以通过三个PHP函数运行外部命令

system();
exec();
shell_exec();
Run Code Online (Sandbox Code Playgroud)

但他们的区别是什么?尽管它们具体应用,但在大多数情况下,可以同样使用.我很想知道哪些是可以同样使用的首选.例如,对于解压缩文件或压缩文件夹(使用tar命令),哪一个是首选(可能从性能的角度来看)?

更新:在另一个问题中,我发现了一个非常有用的链接,描述了这些功能的不同方面.我在这里分享链接,因为其他人可能会用来更好地了解安全问题和其他方面.

Gav*_*iel 90

exec - 执行外部程序

system - 执行外部程序并显示输出

shell_exec - 通过shell执行命令并将完整输出作为字符串返回

所以如果你不需要输出,我会选择exec.

更多详情:

  • `exec()`返回输出的最后一行,所以如果你调用一个只输出像whoami`或`pwd`这样的单个值的简单程序,`exec()`就是完美的. (7认同)