PHP中exec函数和shell_exec函数的区别_php实例

这两个函数都是执行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

exec例子

复制代码 代码如下:

<?php
/**
 * exec与shell_exec的区别
 * 琼台博客
 */
$data = exec('/bin/ls -l');
echo '<pre>';
print_r($data);
echo '</pre>';
?>

执行结果

复制代码 代码如下:

-rw-r--r--. 1 lee web  81 Mar  8 17:00 c.php

shell_exec例子

复制代码 代码如下:

<?php
/**
 * exec与shell_exec的区别
 * 琼台博客
 */
$data = shell_exec('/bin/ls -l');
echo '<pre>';
print_r($data);
echo '</pre>';
?>

执行结果

复制代码 代码如下:

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函数,当然,如果命令执行结果只有一行返回信息,那么使用哪个都无所谓。

时间: 2024-09-19 02:45:58

PHP中exec函数和shell_exec函数的区别_php实例的相关文章

PHP函数addslashes和mysql_real_escape_string的区别_php实例

首先:不要使用mysql_escape_string,它已被弃用,请使用mysql_real_escape_string代替它. mysql_real_escape_string和addslashes的区别在于: 区别一: addslashes不知道任何有关MySQL连接的字符集.如果你给所使用的MySQL连接传递一个包含字节编码之外的其他编码的字符串,它会很愉快地把所有值为字符'.".\和\x00的字节进行转义.如果你正在使用不同于8位和UTF-8的其它字符,这些字节的值不一定全部都是表示字符

深入浅析php中sprintf与printf函数的用法及区别_php实例

PHP sprintf() 函数 把百分号(%)符号替换成一个作为参数进行传递的变量: <?php $number = 2; $str = "Shanghai"; $txt = sprintf("There are %u million cars in %s.",$number,$str); echo $txt; ?> 定义和用法 sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处

PHP explode()函数的几个应用和implode()函数有什么区别_php实例

explode()函数介绍 explode() 函数可以把字符串分割为数组. 语法:explode(separator,string,limit). 参数 描述 separator 必需.规定在哪里分割字符串. string 必需.要分割的字符串. limit 可选.规定所返回的数组元素的数目. 可能的值: 大于 0 - 返回包含最多 limit 个元素的数组 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组 0 - 返回包含一个元素的数组 本函数返回由字符串组成的数组

解析php函数method_exists()与is_callable()的区别_php技巧

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable(),相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数.数组必须包含对象或类名,以将其作

PHP对称加密函数实现数据的加密解密_php实例

项目中有一个地方用到了将用户ID加密.传至下个接点进行反解的需求.(原谅我不能透漏太多-_-!),第一个想到的就是康盛Ucenter中的一个函数,后来搜了下,在简明魔法中也找到了个简单的方法,遂整合了下,形成了自己使用的函数. 一.对称加密 发送方将明文使用密钥和算法处理成密文发送出去,接收方使用密钥和算法将密文处理成明文,发收信双方使用同一个密钥对数据进行加密和解密. 因为使用同一个密钥加密.解密,所以安全性上不仅与算法有关,密钥的安全也很重要. 当然并不是密钥越复杂越好,相反密钥通常比较小的

php的sprintf函数的用法 控制浮点数格式_php实例

控制浮点数打印格式 浮点数的打印和格式控制是sprintf 的一大常用功能,浮点数使用格式符"%f"控制,默认保留小数点后6 位数字,比如: 复制代码 代码如下: sprintf("%f", 3.1415926); //结果:"3.141593" 但,有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:"%m.nf"格式,其中m 表示打印数字的整体宽度,n 表示小数点后的位数.比如: 复制代码 代码如下: sprintf

浅谈php中urlencode与rawurlencode的区别_php实例

前段时间说自己遇到了个<URL加号引发错误>的BUG,引起这个bug的原因就是自己在URL中使用了 urlencode 函数,该函数会把空格转换成加号,这样就导致URL解析出错,而空格只有转换成 %20 才可以可以正常解析,这时我们就需要使用 rawurlencode 函数. 下面就介绍一下 urlencode 函数与 rawurlencode 函数的区别: urlencode 函数: 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格

php中删除、清空session的方式总结_php实例

session删除清空是很讲究了如果我们定义好可以清除指定变量否则不小心会把所有session都清除掉了,下面我们来看一些总结. 第一种方式:unset($_SESSION['xxx']) 删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量. 其作用和session_unregister()相同. session_unregister()在PHP5中已经废弃.  php 官方删除session方式 <?php // 初始

PHP中魔术变量__METHOD__与__FUNCTION__的区别_php技巧

本文实例讲述了PHP中魔术变量__METHOD__与__FUNCTION__的区别,分享给大家供大家参考.具体分析如下: __METHOD__类的方法名(PHP 5.0.0 新加).返回该方法被定义时的名字(区分大小写). __FUNCTION__函数名称(PHP 4.3.0 新加).自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写).在 PHP 4 中该值总是小写字母的. 文档解释都是说返回函数(方法)的名字.区别在于: __FUNCTION__只是返回方法的名字: __METHO