引言
在一些特殊情况下,会使用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() - 在当前进程空间执行指定程序
参考:
- PHP执行外部程序的方法
- PHP在linux上执行外部命令(整理)