PHP shell_exec()与exec()的区别
时间:2017-07-28
本文章向大家介绍PHP shell_exec()与exec()的区别,需要的朋友可以参考一下。
我很难理解shell_exec()
和exec()
之间的区别
我一直习惯使用exec()
执行服务器端命令,但不知道shell_exec()
什么时候使用?
shell_exec()
是否只是exec()的
一个速记?参数较少似乎是一样的。
区别:
shell_exec
将所有输出流作为字符串返回。exec
默认情况下返回输出的最后一行,但可以将所有输出提供为指定为第二个参数的数组。
shell_exec
- 通过shell执行命令并将完整输出作为字符串返回
exec
- 执行外部程序。
不同之处在于,shell_exec
您将输出作为返回值。
- 使用exec(),您可以传递一个可选的param变量,该变量将接收一组输出行。在某些情况下,这可能会节省时间,尤其是在命令输出已经是表格的情况下。
比较:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
相反,如果命令的输出是xml或json,那么将每一行作为数组的一部分并不是你想要的,因为你需要将输入后处理成其他形式,所以在这种情况下使用shell_exec 。
值得指出的是,shell_exec是fortic运算符的别名,对于那些用于* nix的运算符。
$out = `ls`;
var_dump($out);
exec还支持一个附加参数,该参数将提供执行命令的返回码:
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
如shell_exec手册页中所述,当您实际需要从正在执行的命令返回代码时,您别无选择,只能使用exec。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC