了解命令的区别并进行直观的选择
这是一篇翻译文章,原作者通过表格的形式更加直观的展现出差异并进行选择
PHP有众多调用系统命令的函数,大致如下:
于是就想着总结一下它们的差异。本想着对照手册把它们的函数功能,参数,返回等都列出来,但是其实不利于直观看出差异来。谷歌上发现大多数人跟我想的一样,更侧重于函数功能的介绍。于是通过stack overflow,终于发现了满意的答案,虽然答案简短但是直观,于是准备翻译一下,原文地址:http://stackoverflow.com/questions/732832/php-exec-vs-system-vs-passthru#answer-39681338
先前的回答看起来有点疑惑、不完整(译注:其他回答通篇文字说明),因此以下表总结了区别:
Command | Displays Output | Can Get Output | Gets Exit Code |
---|---|---|---|
system() | Yes(text) | Last line only | Yes |
passthru | Yes(raw) | No | Yes |
exec | No | Yes (array) | Yes |
shell_exec | No | Yes (string) | No |
backticks(``) | No | Yes (string) | No |
其他易混淆的注意事项:
翻译完。
任何脚本都需要在安全的环境下执行,PHP提供了两个函数来保证执行系统命令的安全。
说明:对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。反斜线()会在以下字符之前插入: #&;`|*?~<>^()[]{}$, \x0A 和 \xFF。 ‘ 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 都会被空格代替。
说明:将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。
原文:https://www.cnblogs.com/luyuqiang/p/php-call-system-command.html