引言

在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令、shell脚本、可执行程序等等

PHP执行外部程序的方法

  • system(),system函数将执行的结果直接输出
  • exec():执行一个外部程序,将输出结果保存在第二个参数上
  • passthru():执行外部程序并且显示原始输出
  • shell_exec(),没有参数中接收返回值,而且没有执行成功的状态码
  • proc_open(),会fork一个子进程,返回文件指针,但可提供双向通道
  • escapeshellcmd():只是辅助作用
  • escapeshellarg():只是辅助作用

这些函数的使用前提:

  • PHP没有运行在安全模式,关掉安全模式,即:safe_mode = off
  • 禁用函数列表 disable_functions = exec, system, shell_exec,proc_open, popen, 如果禁用了,就关掉。

    注意:执行外部程序是存在风险的,所以使用这些函数要在确保安全的情况下使用。

exec() - 执行一个外部程序
passthru() - 执行外部程序并且显示原始输出
popen() - 打开进程文件指针,fork一个子进程,返回文件指针
escapeshellcmd() - shell 元字符转义
pcntl_exec() - 在当前进程空间执行指定程序

参考:

  1. PHP执行外部程序的方法
  2. PHP在linux上执行外部命令(整理)

PHP执行外部程序的方法相关推荐

  1. php 运行外部程序_PHP实现执行外部程序的方法详解

    这篇文章主要介绍了PHP实现执行外部程序的方法,结合实例形式分析了php执行外部程序的常用函数相关使用技巧与注意事项,需要的朋友可以参考下 本文实例讲述了PHP实现执行外部程序的方法.分享给大家供大家 ...

  2. php结束外部程序,PHP执行外部程序的方法

    在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令.shell脚本.可执行程序等等,今天在源码中了解了一下PHP执行外部程序的方法,借此机会顺便整理一下. 在源码中 exec.h ...

  3. PHP调用外部程序的方法解析

    很多情况下需要php调用其他程序如shell命令.shell脚本.可执行程序等等,此时需要使用到诸如exec/system/popen/proc_open等函数,每种函数有各自适合使用的场景以及需要注 ...

  4. [笔记]Windows核心编程《番外篇》几种常见的执行命令行方法

    文章目录 前言 WinExec 作用 实例 CreateProcess 作用 实例 System popen ShellExecute ShellExecute ShellExecuteEx 区别比较 ...

  5. 计划任务执行php文件,linux系统下添加计划任务执行php文件方法

    在web开发过程中,经常需要设定一些定期执行的任务,比如商品定时上下架.我们以php文件为例,讲解linux下的计划任务. 方法/步骤 1.打开linux系统命令行界面. 在命令行界面中输入如下命令: ...

  6. java -version cmd_java如何运行步骤cmd?Java执行cmd命令方法有哪些?

    写好一个java程序之后,我们的最终目的就是可以正确的运行程序,如果程序运行正确了,那么代码也就没有什么问题了,可是java如何运行步骤cmd?接下来,我们就来给大家讲解一下这方面的内容. 1.首先用 ...

  7. jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法 参考文章: (1)jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法 ( ...

  8. asp.net服务器控件button先执行js再执行后台的方法

    关于button这个服务器控件,我一直想减少它向服务器提交数据.那些检测,还是在客户端实现就好了. 这就需要javascript,但是我发现仅仅有javascript还是不够的.button服务器控件 ...

  9. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

最新文章

  1. 1 元秒杀 1000+ 册爆款电子书,错过再等一年!
  2. spacy库的安装与使用_PythonEEG工具库MNEPython详细安装与使用
  3. linux日志使用方法,Linux 日志终极指南
  4. Python如何生成windows可执行的exe文件
  5. python线程间数据共享_python 进程间数据共享multiProcess.Manger实现解析
  6. u-boot移植随笔:困难重重,前路未知
  7. python render_requests-html库render的使用
  8. GNOME 3.20 两大新特性说明
  9. Unity 编辑器启动时运行自定义编辑器脚本
  10. 计算机控制技术数据存储器有,计算机控制技术复习资料.doc
  11. vfp报表打印到PDF文件中不用输入文件名
  12. 联想lenovo G40-70M 无线网卡白名单跳过
  13. linux tar命令将压缩包解压到指定位置,用tar命令把目标压缩包解压到指定位置
  14. 旧的华为手机刷Android9,直播mate9刷安卓10!
  15. 钛资本研究院:全球产业链重构下的芯片机遇
  16. 嵌入式linux dlna,DLNA 编译
  17. No discret job created in Oracle
  18. 每日总结(2021/12/15)
  19. 逻辑回归实现数字手写识别
  20. 同济大学的计算机保研率,同济大学2020届保研率:27.7%

热门文章

  1. Android全工程编译不过问题汇总
  2. Kettle连接Mysql数据库异常
  3. JS入门之Date对象
  4. python 程序停止打印日志_优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!
  5. java 队列复制_java - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出
  6. android listview edittext 事件,Android ListView item中含有Edittext 中一些坑
  7. 阿里妈妈技术团队5篇论文入选 SIGIR 2022!
  8. php输出图片没有,ThinkPHP里无法输出图片 设置响应头
  9. leetcode 滴滴_一个菜逼程序媛的求职历程(秋招已拿阿里、网易、滴滴等校招offer)...
  10. mysql递归查询之后的排序问题_MySQL递归排序查询+树节点生成