php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)


Posted in PHP onSeptember 07, 2012

php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。

在很多时候利用php的exec,system等函数调用系统命令可以帮助我们更好更快的完成工作。比如前二天笔者在批量处理.rar文件时exec就帮我了大忙了。

今天整理一下常用的调用系统函数发出来和大家分享经验。

注意:要想使用这二个函数php.ini中的安全模式必须关闭,要不然为了安全起见php是不让调用系统命令的。

先看一下php手册对这二个函数的解释:

exec --- 执行外部程式

语法 : string exec ( string command [, array &output [, int &return_var]] )

说明 :

exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。

如果有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。

如果有给予参数array和return_var,则传回执行的状态命令将会写到这个变量。

注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。

注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。

system --- 执行外部程式并且显示输出

语法 : string system ( string command [, int &return_var] )

说明 :

system( )执行给予的命令command,并且输出结果。如果有给予参数return_var,则执行命令的状态码将会写到这个变量。

注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。

注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。

如果PHP是运作成伺服器模组,在输出每一行后,system( )会试着自动地清除web伺服器的输出缓冲。

成功则传回命令的最后一行,失败则传回false。

如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。

这二个都是用来调用系统shell命令,

不同点:

exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败

systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败

exec示例:

<?php 
$a = exec("dir",$out,$status); 
print_r($a); 
print_r($out); 
print_r($status); 
?>

system示例:
<?php 
$a = system("dir",$out); 
print_r($a); 
print_r($out); 
?>

system、exce、passthru区别
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码
PHP 相关文章推荐
使用php shell命令合并图片的代码
Jun 23 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
php链式操作的实现方式分析
Aug 12 PHP
PHP实现抽奖功能实例代码
Jun 30 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 #PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 #PHP
初步介绍PHP扩展开发经验分享
Sep 06 #PHP
php写的带缓存数据功能的mysqli类
Sep 06 #PHP
一个PHP并发访问实例代码
Sep 06 #PHP
PHP连接MongoDB示例代码
Sep 06 #PHP
谨慎使用PHP的引用原因分析
Sep 06 #PHP
You might like
php&amp;java(三)
2006/10/09 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
js loading加载效果实现代码
2009/11/24 Javascript
js删除所有的cookie的代码
2010/11/25 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
python实现BackPropagation算法
2017/12/14 Python
详解Python装饰器
2019/03/25 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
爷爷追悼会答谢词
2014/01/24 职场文书
2015感人爱情寄语
2015/02/26 职场文书
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript