PHP中system()、exec()和shell_exec()的区别是什么?

PHP中system()、exec()和shell_exec()的区别是什么?,php,shell,system,exec,shell-exec,Php,Shell,System,Exec,Shell Exec,可以通过以下三个PHP函数运行外部命令: system(); exec(); shell_exec(); 但他们的区别是什么?尽管它们有特定的应用,但在大多数情况下,它们可以被同等地使用。我很想知道,当它们可以被同等使用时,哪一个是首选的。例如,对于解压缩文件或压缩文件夹(使用tar命令),首选哪一个(可能从性能角度来看) 更新:在另一个问题中,我发现一个非常有用的描述了这些函数的不同方面。我在这里分享这个链接,其他人可能会使用它来更好地理解安全问题和其他方面。-执行一个外部程序 -执行外部程

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

system();
exec();
shell_exec();
但他们的区别是什么?尽管它们有特定的应用,但在大多数情况下,它们可以被同等地使用。我很想知道,当它们可以被同等使用时,哪一个是首选的。例如,对于解压缩文件或压缩文件夹(使用tar命令),首选哪一个(可能从性能角度来看)

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

-执行一个外部程序

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

-通过shell执行命令,并以字符串形式返回完整的输出

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

进一步详情:


不必客气,但手册中对各自的功能有何规定?另外,您忘记了passthru():)@GordonM我阅读了手册,但我不理解每个功能的首选项。在许多情况下,它们可以同等使用。我想要一个实际的观点。可能是@periklis的重复。你说得对,这个问题解决了同样的问题,但我找不到它。一个答案有一个非常有用的详细解释链接。谢谢
exec()
返回输出的最后一行,因此,如果您正在调用一个只输出单个值的简单程序,如
whoami
pwd
exec()
是完美的选择。