2019独角兽企业重金招聘Python工程师标准>>>

准备工作

  出于安全性考虑,在通常情况下虚拟主机、XAMPP、DedeAMPZ等PHP运行环境都是禁止调用系统外部命令的。所以当你需要使用PHP执行命令的函数调用系统外部命令时,你需要确保PHP运行环境支持PHP执行命令的函数。

  如果你使用的是XAMPP、DedeAMPZ,一般默认是禁止运行PHP执行命令的函数的,你可以在php.ini配置文件中disable_functions一项中去除你想要使用的函数,然后重启apache即可。我使用的是DedeAMPZ,所以我去除了exec()、passthru()、system()、shell_exec()这四个函数。PHP运行环境如何配置?

  如果你的PHP运行环境是自行配置的,默认php.ini配置文件中是不禁止你调用执行外部命令的函数的,当然出于安全考虑,你还是应该禁止调用一部分执行系统外部命令的函数,找到disable_functions,配置如下:

disable_functions = exec,system,passthru,shell_exec


方法一:使用exec函数执行系统外部命令

原型:function exec(string $command,array[optional] $output,int[optional] $return_value)

<?php
exec("dir",$output);
print_r($output);
?>

知识点:exec执行系统外部命令时不会输出结果,而是返回结果的最后一行,如果你想得到结果你可以使用第二个参数,让其输出到指定的数组,此数组一个记录代表输出的一行,即如果输出结果有20行,则这个数组就有20条记录,所以如果你需要反复输出调用不同系统外部命令的结果,你最好在输出每一条系统外部命令结果时清空这个数组,以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。

方法二:使用system函数执行系统外部命令

原型:function system(string $command,int[optional] $return_value)

<?php
system("dir");
?>

知识点:system和exec的区别在于system在执行系统外部命令时,直接将结果输出到游览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。

方法三:使用函数passthru执行系统外部命令

原型:function passthru(string $command,int[optional] $return_value)

<?php
passthru("dir");
?>

知识点:passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。

方法四:反撇号`(和~在同一个键)执行系统外部命令

安全性说明

  当你使用这些函数执行命令时,如果是根据用户提交数据作为执行命令的话,你需要考虑系统安全性,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。

其他说明

  当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显著提高程序执行的效率。即

<?php
system("dir > leapsoulcn.txt");
?>

说明:这里system执行命令时并不将结果直接输出至游览器而是输出至指定目录下的文件中,显著提高了程序执行的效率。

转载于:https://my.oschina.net/zhangdapeng89/blog/52106

php执行系统外部命令的四种方法相关推荐

  1. php exec 怎么确定执行成功_php执行系统外部命令的4种方法

    提供4种方法: - exec().passthru().system(). shell_exec(). 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数.找到 disable_f ...

  2. exec 执行结果_php执行系统外部命令的4种方法

    提供4种方法: - exec().passthru().system(). shell_exec(). 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数.找到 disable_f ...

  3. 自学Linux命令的四种方法

    本文由 极客范 - 小道空空 翻译自 Danny Stieben.欢迎加入极客翻译小组,同我们一道翻译与分享.转载请参见文章末尾处的要求. 如果你想成为Linux高手,那么掌握一些Linux命令是必不 ...

  4. 网页中嵌入外部页面的四种方法

    一.应用框架技术  ---- 要在宿主页面中嵌入外部页面的方法是,在宿主页面中包含外部页面的位置插入"< IFRAME name="XXX" width=X hei ...

  5. 页面中如何引用外部的HTML(四种方法)

    页面中如何引用外部的HTML(四种方法) 一.总结 一句话总结:a.iframe标签        b.ajax引入代码片段        c.link import的方法导入        d.re ...

  6. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  7. html如何引入css文件?HTML引入外部css文件的四种方法

    在学习前端的时候,我们应该知道css给html标记添加各种样式,用来告诉浏览器,因该如何显示这些标记里面的内容.既然css是用来给html添加各种样式的,那么,html中如何引入外部的css文呢?本篇 ...

  8. linux dd命令制作软盘,制作Linux启动软盘的四种方法

    Linux的启动软盘有boot盘和boot/root盘之分,所谓的boot盘只能用来启动已经安装在硬盘上的Linux系统,而boot/root盘本身就是一个迷你Linux系统.Linux启动软盘是系统 ...

  9. PHP 执行系统外部命令 system() exec() passthru()

    PHP中调用外部命令,可以用如下三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shel ...

最新文章

  1. Windows Phone 7用户界面原型截图汇总
  2. 新JSON绑定库JSON-B发布公开预览版
  3. 独立集,覆盖集,支配集,最大团,最大匹配
  4. 手把手教你用 TensorFlow 实现文本分类(下)
  5. 方法数超了65535 无法安装的解决方案
  6. linux xlib函数手册,Xlib 学习笔记
  7. Orleans 3.0 为我们带来了什么
  8. 局部变量是线程安全的,原因是什么
  9. 使用Telnet客户端测试Exchange邮件收发
  10. 修改保留注释_Kraken2:宏基因组快速物种注释神器
  11. 工频逆变器有哪些应用?工频逆变器、高频逆变器有何区别?
  12. TeXLive2021+TeXStudio安装及配置,亲测有效!
  13. 【刘文彬】 Debug EOS:nodeos + mongo_db_plugin
  14. win10开机系统恢复(WinRE)中找不到系统恢复映像或功能不全的解决方法
  15. sublime text3安装python插件和flake8_Sublime Text环境配置(Python、Latex、Markdown)及常见问题汇总...
  16. (附源码)spring boot大学生综合素质测评系统 毕业设计 162308
  17. 涨薪神作,阿里内部火爆的实战文档和搭建项目笔记,你还怕没有项目可做吗
  18. VB.net小技巧——读取文本文件并显示到文本框中
  19. 升级shiro_北海道Shiro身体乳真假辨别
  20. HDU1905 Pseudoprime numbers

热门文章

  1. 服务器所有文件,检索服务器端文件夹中的所有文件
  2. mf怎么使mysql信息分区_细聊MySQL的分区功能
  3. 安装android到u盘安装程序,在u盘内安装android教程
  4. 点播同时并发怎么算带宽_如何搭建一个视频点播系统?
  5. python pymysql实例_python-Mysql的操作(pyMysql的介绍)
  6. 动态规划之钢筋切割问题
  7. Spring Cloud Alibaba 项目工程准备
  8. 记录一个解决了一个下午加一个晚上的问题,关于springMVC上传文件的功能
  9. 手把手教你python实现量价形态选股知乎_【手把手教你】Python实现基于事件驱动的量化回测...
  10. cookie的expires属性和max-age属性