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_exec
、system()
和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
显示原始数据。
使用exec
和shell_exec
可以自己处理输出,而system
和passthru
不允许您自定义它并立即显示输出。
更详细的比较可以在here 找到。
【讨论】:
如果你有一个例子会很棒system
出错时返回 false。这是否意味着当退出代码为!== 0
时它将返回false?所以如果我只想检查命令是否成功,我不必实际检查$retval
?以上是关于PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]