php外部系统命令执行函数
总结一下php中常用的执行函数,一篇水文
一、system()函数
(PHP 4, PHP 5, PHP 7)
介绍
:执行外部程序,并且显示输出说明
system( string $command[, int &$return_var] ) : string
同 C 版本的 system() 函数一样,本函数执行 command 参数所指定的命令,并且输出执行结果。
如果 PHP 运行在服务器模块中, system() 函数还会尝试在每行输出完毕之后,自动刷新 web 服务器的输出缓存。
该函数执行后,直接在终端窗口打印命令执行的结果
如果要获取一个命令未经任何处理的原始输出,请使用 passthru() 函数。
参数
command
要执行的命令。
return_var
如果提供 return_var 参数,则外部命令执行后的返回状态将会被设置到此变量中。返回值
成功则返回命令输出的最后一行,失败则返回 FALSE例
:
<?php
system('whoami');
?>
二、passthru()函数
(PHP 4, PHP 5, PHP 7)
介绍
:执行外部程序并且显示原始输出说明
passthru( string $command[, int &$return_var] ) : void
同 exec() 函数类似, passthru() 函数也是用来执行外部命令(command)的。当所执行的 Unix 命令输出二进制数据,并且需要直接传送到浏览器的时候,需要用此函数来替代 exec() 或 system() 函数。常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。通过设置 Content-type 为 image/gif,然后调用 pbmplus 程序输出 gif 文件,就可以从 PHP 脚本中直接输出图像到浏览器。
参数
command
要执行的命令。
return_var
如果提供 return_var 参数, Unix 命令的返回状态会被记录到此参数。返回值
没有返回值。例
:
<?php
passthru('whoami');
?>
三、exec()函数
(PHP 4, PHP 5, PHP 7)
介绍
:执行一个外部程序说明
exec( string $command[, array &$output[, int &$return_var]] ) : string
exec() 执行 command 参数所指定的命令。
参数
command
要执行的命令。
output
如果提供了 output 参数,那么会用命令执行的输出填充此数组,每行输出填充数组中的一个元素。数组中的数据不包含行尾的空白字符,例如 \n 字符。请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,请在传入 exec() 函数之前对数组使用 unset() 函数进行重置。
return_var
如果同时提供 output 和 return_var 参数,命令执行后的返回状态会被写入到此变量。返回值
命令执行结果的最后一行内容。如果你需要获取未经处理的全部输出数据,请使用 passthru() 函数。
如果想要获取命令的输出内容,请确保使用 output 参数。总结
:执行系统命令,但它并不会自己输出,需要配合echo/print例:
<?php
echo exec('whoami');
或将获取的数据传入一个数组
exec('ipconfig',$out);
var_dump($out);
?>
四、shell_exec
(PHP 4, PHP 5, PHP 7)
介绍
:通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。说明
shell_exec( string $cmd) : string
本函数同 执行操作符。
参数
cmd
要执行的命令。返回值
命令执行的输出。如果执行过程中发生错误或者进程不产生输出,则返回 NULL。Note
当进程执行过程中发生错误,或者进程不产生输出的情况下,都会返回 NULL,所以,使用本函数无法通过返回值检测进程是否成功执行。如果需要检查进程执行的退出码,请使用 exec() 函数。- 总结:该函数也可执行系统命令,同exec()函数一样,需要使用配合echo/print来输出显示内容
<?php
echo shell_exec('whoami');
?>
五、反撇号:`
与shell_exec函数的功能相同。
shell_exec其实是它的变体,使用方法和shell_exec一样,例:
<?php
echo `whoami`;
?>
六、区别比较
(1)system与passthru的区别
passthru可以输出二进制数据,例如图像数据
(2)exec与shell_exec的区别
exec只能将获取的数据返回其中最后一行数据,而shell_exec可以将获取的数据全部返回
例
:
<?php
echo exec('ipconfig');
//echo shell_exec('ipconfig');
?>
注
:输出和返回值是不同的,返回值是保存在内存中,需要使用echo/print来输出才可,这样就可以理解例如system函数为什么执行系统命令后,输出命令的结果,却不是输出它的返回值(也就是他所说的最后一行数据)
举个例子就懂了,比较下方两个代码的输出即可理解,例:
<?php
system('whoami');
?>
与
<?php
echo system('whoami');
?>
你也可以使用ipconfig或ifconfig来对比,看最后两行即可
php外部系统命令执行函数相关推荐
- python调用系统命令_Python如何调用外部系统命令
前言 利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法 ...
- python调用系统命令_Python调用外部系统命令
利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.命令执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法, ...
- html 执行外部js的函数,javascript – Chrome扩展程序:加载并执行外部脚本
我无法在我的chrome扩展程序中加载和执行外部js-script.看起来和 this question一样,但我仍然无法弄清楚为什么它在我的情况下不起作用. 我的想法是,我希望在我的内容脚本中有一些 ...
- 2022-10-11(一、远程命令执行和系统命令执行)
文章目录 命令执行 原理 危害 RCE 管道符号 远程执行常用`函数` 执行系统命令: 代码执行与加密: 文件包含与生成: PHP代码执行函数 敏感文件 例子 加固 参考 命令执行 命令执行漏洞是指攻 ...
- PHP执行命令的函数有,php的命令执行函数
php 动态执行 函数,PHP学习 你的知识信息已经过时了吗? ,php自动执行函数,php的命令执行函数 PHP 为执行外部命令提供大量函数_历史学_高等教育_教育专区.php基础PHP 为执行外部 ...
- 深入理解javascript中的立即执行函数(function(){…})()
2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- 【JavaScript基础笔记】模块化、立即执行函数应用、闭包应用
模块化:为了提高JS代码的长期可读性,易维护性,将JS代码根据其对应的功能块区分成不同的JS文件,并将其包裹在立即执行函数内,从而使其中的变量设定为局部变量,不会造成不同模块的变量污染. 立即执行函数 ...
- ( function(){…} )()和( function (){…} () )是两种立即执行函数
函数声明:function fnName () {-}; 函数表达式 var fnName = function () {-}; 匿名函数:function () {}; fnName(); func ...
最新文章
- js 404页面跳转
- maven 插件:Tomcat7
- Microbiome:Kraken2进行16S物种注释又快又准
- OpenStack运维面试(1)
- 【kruskal重构树】【主席树】werewolf 狼人(P4899)
- 波士顿大学研究生计算机科学专业排名,2020年波士顿大学排名TFE Times美国最佳计算机科学硕士专业排名第52...
- 在Android NDK下打印log
- Linux命令行报错 bash: cannot create temp file for here-document: No space left on device
- u启动win10pe安装win10系统教程
- idea打包java项目
- Echarts直方图
- 程序员面试注意几点就够了
- 勒索病毒来袭!及时备份数据吧!
- 说明书丨Epigentek EpiNext 高灵敏免疫共沉淀测序试剂盒
- vue生成海报(vue-canvas-poster)
- 利用MATLAB实现WAV音频的LSB信息隐藏
- 设定所有版本的谷歌浏览器支持flash
- LeetCode - 500 - 键盘行(keyboard-row)
- ImageJ Nikon_尼康“小世界”竞赛的获胜者揭示了微小的彩色世界|尼康|小世界|nikon|显微镜...
- zjs-my-diary-20191227