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

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

内容导读

收集整理的这篇技术教程文章主要介绍了PHP系统程序执行函数(system,passthru,exec)简单分析(附代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3345字,纯文字阅读大概需要5分钟

内容图文

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

exec — 执行一个外部程序

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

范例

<?php



echo exec("ls",$output);



echo "</br>";



print_r($file);?>

执行结果:

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

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

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

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

范例

<?php



passthru("ls");?>

执行结果:

index.phptest.php

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

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

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

<?php



system('ls', $retval);?>

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

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

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

范例

<?php$output = `ls -al`;echo "<pre>$output</pre>";?>

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

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

<?php$output = shell_exec('ls -lart');echo "<pre>$output</pre>";?>

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

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

返回值
转换之后字符串。

范例

<?phpsystem('ls '.escapeshellarg($dir));?>

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

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

返回值
转义后的字符串。

范例

<?php// 我们故意允许任意数量的参数$command = './configure '.$_POST['configure_options'];$escaped_command = escapeshellcmd($command); system($escaped_command);?>

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

相关文章推荐:

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

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

以上就是PHP系统程序执行函数(system,passthru,exec)简单分析(附代码)的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP系统程序执行函数(system,passthru,exec)简单分析(附代码)全部内容,希望文章能够帮你解决PHP系统程序执行函数(system,passthru,exec)简单分析(附代码)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com