0

0

PHP系统程序执行函数(system,passthru,exec)简单分析(附代码)

不言

不言

发布时间:2018-08-03 11:43:32

|

3756人浏览过

|

来源于php中文网

原创

这篇文章给大家介绍的内容是关于PHP系统程序执行函数(system,passthru,exec)简单分析(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

exec — 执行一个外部程序

string exec ( string $command [, array &$output [, int &$return_var ]] )

范例

";
        print_r($file);
?>

执行结果:

test.php
Array( [0] => index.php [1] => test.php)

立即学习PHP免费学习笔记(深入)”;

分析:
exec 不会主动返回执行结果,且只是返回结果的最后一行;
想要获得完整的结果,需要第二个参数,让其输出到指定的数组,此数组一个记录代表输出的一行,而且反复执行不同的系统外部命令时,在输出每一条系统外部命令结果时清理unset()这数组,以防混乱;
第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。

passthru — 执行外部程序并且显示原始输出

void passthru ( string $command [, int &$return_var ] )

范例

执行结果:

index.phptest.php

分析:
同 exec() 函数类似,也是用来执行外部命令,但直接将结果输出到浏览器(未经任何处理的 原始输出),没有返回值;
当需要输出二进制数据,并且需要直接传送到浏览器的时候,来使用这函数,如:直接输出图像流的命令;

system — 执行外部程序,并且显示输出

string system ( string $command [, int &$return_var ] )

分析:
直接将结果输出到浏览器;
第二个参数是外部命令执行后的返回状态;
成功则返回命令输出的最后一行,失败则返回 FALSE;
如果 PHP 运行在服务器模块中,system() 函数还会尝试在每行输出完毕之后, 自动刷新 web 服务器的输出缓存。

shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

说明
string shell_exec ( string $cmd )
反引号运算符“`”的效果与函数 shell_exec() 相同。
shell_exec 的返回值
当进程执行过程中发生错误,或者进程不产生输出的情况下,都会返回 NULL, 所以,使用本函数无法通过返回值检测进程是否成功执行。 如果需要检查进程执行的退出码,请使用 exec() 函数。

Popi.art
Popi.art

一站式AI动画创作平台

下载

范例

$output
"; ?>

注意:
反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。
与其它某些语言不同,反引号不能在双引号字符串中使用。

Example #1 shell_exec() 例程
当 PHP 运行在 安全模式 时,不能使用此函数。

$output
"; ?>

escapeshellarg
说明
string escapeshellarg ( string $arg )
escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。

参数
arg
需要被转码的参数。

返回值
转换之后字符串。

范例

escapeshellcmd
说明
string escapeshellcmd ( string $command )
escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。

反斜线(\)会在以下字符之前插入: `|*?~^()[]{}$\, \x0A 和 \xFF。 ' 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替。
参数
command
要转义的命令。

返回值
转义后的字符串。

范例

Warning
escapeshellcmd() 应被用在完整的命令字符串上。 即使如此,攻击者还是可以传入任意数量的参数。 请使用 escapeshellarg() 函数 对单个参数进行转义。

相关文章推荐:

php中_get方法和_set方法访问方法的实例代码

php实现操作文件的各种方式总结(附代码)

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

564

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

238

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

560

2024.03.01

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1506

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

233

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

127

2025.10.17

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

381

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

213

2023.09.04

微信网页版文件传输助手教程合集
微信网页版文件传输助手教程合集

本专题整合了微信网页版文件传输助手教程、入口等等内容,阅读专题下面的文章了解更多详细内容。

15

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 15.6万人学习

C 教程
C 教程

共75课时 | 4.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号