PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]

Posted

技术标签:

【中文标题】PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]【英文标题】:What is different between exec(), shell_exec, system() and passthru() functions in PHP? [duplicate]PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有什么不同? [复制] 【发布时间】:2013-12-03 01:45:57 【问题描述】:

有人请告诉我。我想知道exec()shell_execsystem()passthru() 函数之间的区别?

我从php.net 搜索无法得到我需要的答案。

【问题讨论】:

据我所知,PHP 网站上为每个提供了正确的描述(有差异)。 uk3.php.net/exec ***.com/questions/10828707/… 你能告诉我 passthru() 有什么用吗?向我发送参考链接,我将通过示例找到我的答案 来自 PHP 文档中的 passthru:“当 Unix 命令的输出是需要直接传回浏览器的二进制数据时,应使用此函数代替 exec() 或 system() 。” uk3.php.net/manual/en/function.passthru.php 【参考方案1】:

passthru 用于返回二进制数据而不是 ascii。一个典型的例子是图像处理程序返回的是图像而不是文本数据。

更多信息请见PHP - exec() vs system() vs passthru()

另见php shell_exec() vs exec()。

【讨论】:

【参考方案2】: exec 只返回生成输出的最后一行。 当命令完成运行时,shell_exec 返回命令的完整输出。 system 立即显示所有输出,并用于显示文本。 passthru 也立即返回输出,但用于二进制数据。 passthru 显示原始数据。

使用execshell_exec 可以自己处理输出,而systempassthru 不允许您自定义它并立即显示输出。

更详细的比较可以在here 找到。

【讨论】:

如果你有一个例子会很棒 system 出错时返回 false。这是否意味着当退出代码为!== 0 时它将返回false?所以如果我只想检查命令是否成功,我不必实际检查$retval

以上是关于PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]

PHP shell_exec 等待脚本完成? [复制]

system 和 shell_exec 的区别

无法使用PHP shell_exec执行powershell脚本函数

PHP协程:并发 shell_exec

PHP执行系统外部命令函数:exec()passthru()system()shell_exec()