PHP中exec与shell_exec函数区别
2013-09-05 19:02
148 查看
这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据。
假如脚本路径下有如下文件
-bash-4.1# ll
总用量 12
-rw-rw-r--. 1 www web 133 7月 16 15:00 a.php
-rw-r--r--. 1 lee web 59 2月 29 17:05 b.php
-rw-r--r--. 1 lee web 81 3月 8 17:00 c.php
先看一下php手册对这二个函数的解释:
exec --- 执行外部程式
语法 : string exec ( string command [, array &output [, int &return_var]] )
说明 :
exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。
如果有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。
exec例子
代码如下
/**
* exec与shell_exec的区别
* 琼台博客
*/
$data = exec('/bin/ls -l');
echo '
';
print_r($data);
echo '
';
?>
执行结果
-rw-r--r--. 1 lee web 81 Mar 8 17:00 c.phpshell_exec例子
shell_exec()
shell_exec() 命令行实际上仅是反撇号 (`) 操作符的变体。如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。例如,清单 1 显示了如何使用反撇号在当前目录中获取每个文本(.txt)的单词计数。
在 shell_exec()
中运行相同的命令
代码如下
$results
=
shell_exec
(
'
wc -w *.txt
'
)
;
echo
$results
;
?>
在图 1 中可以看到,获得的结果与从 shell 脚本得到的一样
exec与shell_exec的区别
代码如下
/**
*
* 琼台博客
*/
$data = shell_exec('/bin/ls -l');
echo '
';
print_r($data);
echo '
';
?>
执行结果
total 12
-rw-rw-r--. 1 www web 139 Jul 16 2012 a.php
-rw-r--r--. 1 lee web 59 Feb 29 17:05 b.php
-rw-r--r--. 1 lee web 81 Mar 8 17:00 c.php所以平时使用exec函数的童鞋注意了,如果你需要获取全部返回信息,就应该使用shell_exec函数,当然,如果命令执行结果只有一行返回信息,那么使用哪个都无所谓
假如脚本路径下有如下文件
-bash-4.1# ll
总用量 12
-rw-rw-r--. 1 www web 133 7月 16 15:00 a.php
-rw-r--r--. 1 lee web 59 2月 29 17:05 b.php
-rw-r--r--. 1 lee web 81 3月 8 17:00 c.php
先看一下php手册对这二个函数的解释:
exec --- 执行外部程式
语法 : string exec ( string command [, array &output [, int &return_var]] )
说明 :
exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。
如果有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。
exec例子
代码如下
/**
* exec与shell_exec的区别
* 琼台博客
*/
$data = exec('/bin/ls -l');
echo '
';
print_r($data);
echo '
';
?>
执行结果
-rw-r--r--. 1 lee web 81 Mar 8 17:00 c.phpshell_exec例子
shell_exec()
shell_exec() 命令行实际上仅是反撇号 (`) 操作符的变体。如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。例如,清单 1 显示了如何使用反撇号在当前目录中获取每个文本(.txt)的单词计数。
在 shell_exec()
中运行相同的命令
代码如下
$results
=
shell_exec
(
'
wc -w *.txt
'
)
;
echo
$results
;
?>
在图 1 中可以看到,获得的结果与从 shell 脚本得到的一样
exec与shell_exec的区别
代码如下
/**
*
* 琼台博客
*/
$data = shell_exec('/bin/ls -l');
echo '
';
print_r($data);
echo '
';
?>
执行结果
total 12
-rw-rw-r--. 1 www web 139 Jul 16 2012 a.php
-rw-r--r--. 1 lee web 59 Feb 29 17:05 b.php
-rw-r--r--. 1 lee web 81 Mar 8 17:00 c.php所以平时使用exec函数的童鞋注意了,如果你需要获取全部返回信息,就应该使用shell_exec函数,当然,如果命令执行结果只有一行返回信息,那么使用哪个都无所谓
相关文章推荐
- PHP中exec与shell_exec函数区别
- PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- PHP 命令行工具 shell_exec, exec, passthru
- php web端不能调用shell_exec运行linux命令(unoconv为例)
- PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
- php shell_exec vs shell
- 解决PHP中Web程序中shell_exec()执行Shell脚本不成功问题
- php shell_exec()与反撇号等价输出结果
- PHP Shell_exec所遇到的坑
- 设置让php能够以root权限来执行exec() 或者 shell_exec()
- php执行外部命令函数:exec()、passthru()、system()、shell_exec()对比
- PHP 命令行工具 shell_exec, exec, passthru, system
- php exec()某个shell结果出错
- 设置让php能够以root权限来执行exec() 或者 shell_exec()
- gitlab webhook php exec 调用 shell 脚本。shell 脚本中调用 git pull 命令无法执行。
- php中exec和system shell_exec区别
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- 概述PHP命令行shell_exec()使用
- php -- PHP在linux上执行外部命令,system(),exec(),shell_exec()