PHP中常见的运行代码方式

此文章发布于14个月前,部分信息可能已经过时,请自行斟酌确认

PHP中常见的运行代码方式

下面是常见的运行程序的方法:

shell_exec
` ` (反引号)
eval
system
exec
passthru

下面分别介绍一下他们的用法:

名称解释返回值特别注意
shell_exec通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。与执行操作符(也叫执行运算符)相同命令执行的输出。 如果执行过程中发生错误或者进程不产生输出,则返回 NULL。
``(反引号)PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符(`)的效果与函数 shell_exec() 相同。 反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。与其它某些语言不同,反引号不能在双引号字符串中使用。
eval把字符串作为PHP代码执行。eval() 返回 NULL,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 PHP 7 开始,执行的代码里如果有一个 parse error,eval() 会抛出 ParseError 异常。在 PHP 7 之前, 如果在执行的代码中有 parse error,eval() 返回 FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。函数eval()语言结构是 非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。 如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,不要允许传入任何由用户 提供的、未经完整验证过的数据 。
system执行外部程序,并且显示输出。成功则返回命令输出的最后一行, 失败则返回 FALSE。
exec执行一个外部程序。命令执行结果的最后一行内容。 如果你需要获取未经处理的全部输出数据, 请使用 passthru() 函数。
passthru执行外部程序并且显示原始输出。同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。没有返回值

其他程序执行函数

escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
escapeshellcmd — shell 元字符转义
exec — 执行一个外部程序
passthru — 执行外部程序并且显示原始输出
proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
proc_get_status — 获取由 proc_open 函数打开的进程的信息
proc_nice — 修改当前进程的优先级
proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。
proc_terminate — 杀除由 proc_open 打开的进程
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
system — 执行外部程序,并且显示输出

最后修改:2020 年 02 月 26 日 02 : 50 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论