失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php中使用exec system等函数调用系统命令办法(不建议使用 可导致安全问题)

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

时间:2023-12-05 21:25:33

相关推荐

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

php教程|php手册

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

php教程-php手册

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

wpf 仪表盘源码,ubuntu网联网吗,爬虫的操作步骤,php 壁纸,SEO写作赚钱lzw

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

交规答题源码,vscode输出js文件,ubuntu ssl 更新,tomcat有几个引擎,sqlite3的数据格式,爬虫反爬虫,php的new date,seo推广软件拼多多,网站建设后台,手机cms模板lzw

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

小说app源码,vscode与io.js,ubuntu 软件 商店,设置tomcat启动vm,新浪爬虫论文,php 本地文件包含,seo公司培训课程推广引流,wordpress主题破解网站,论坛app开发模板下载lzw

注意:要想使用这二个函数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中使用exec system等函数调用系统命令办法(不建议使用 可导致安全问题)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。