PHP执行外部程序的方法

引言

在一些特殊情况下,会使用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上执行外部命令(整理)