php调用外部shell的方法总结.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
php 调用外部 shell 的方法总结 )、执行外部命令 )、在打开文件时有些限制 )、连接MySQ数据库 )、基于的认证 在安全模式下,只有在特定目录中的外部程序才可以被执行, 对其它程序的调用将被拒绝。 该目录可以在 php.ini 文件中用 safe_mode_exec_dir 指令,或 在编译PHF是加上--with-exec-dir 选项来指定,默认是 /usr/local/php/bin 。 如果调用一个应该可以输出结果的外部命令(意思是 PHP脚本 无错),得到的却是一片空白,那么很可能 PHP是运行在安全模式下 的。 遇到这种情况,如何处理呢? 在PHP中调用外部命令,可以用如下三种方法来实现: PHP 提供的专门函数 PHP 提供共了 3 个专门的执行外部命令的函数: system() , exec() , passthru() 。 system() 原型: stringsystem(stringmand[,intreturn_var]) system() 函数很其它语言中的差不多,它执行给定的命令,输 出和返回结果。第二个参数是可选的, 用来得到命令执行后的状态码。 例子: 复制代码代码如下 : ?php system(/usr/local/bin/webalizer/webalizer); ? exec() 原型: stringexec(stringmand[,stringarray[,intreturn_var]]) exec() 函数与 system() 类似,也执行给定的命令,但不输出结 果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行, 但用第二个参数 array 可以得到完整的结果, 方法是把结果逐行追加 到 array 的结尾处。所以如果 array 不是空的,在调用之前最好用 unset() 最它清掉。只有指定了第二个参数时, 才可以用第三个参数, 用来取得命令执行的状态码。 例子: 复制代码代码如下 : ?php exec(/bin/ls-l); exec(/bin/ls-l,$res); #$res 是一个数据,每个元素代表结果的一行 exec(/bin/ls-l,$res,$rc); #$rc 的值是命令 /bin/ls-l 的状态码。成功的情况下通常是 0 ? passthru() 原型: voidpassthru(stringmand[,intreturn_var]) passthru() 只调用命令,不返回任何结果,但把命令的运行结 果原样地直接输出到标准输出设备上。所以 passthru() 函数经常用 来调用象 pbmplus(Unix 下的一个处理图片的工具, 输出二进制的原 始图片的流)这样的程序。同样它也可以得到命令执行的状态码。 例子: 复制代码代码如下 : ?php header(Content-type:image/gif); passthru(./ppmtogifhunte.ppm); ?

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档