电脑安全

您当前的位置:主页 > 电脑安全 >

PHP 中执行系统外部命令-网络编程

来源:[db:来源]标题:   命令    编辑:电脑技术全能网 时间:2019-09-19 12:34

原标题:PHP 中执行系统外部命令-网络编程
   PHP作为一种效劳器真个剧本言语,象编写简略,或许是庞杂的静态网页如许的义务,它完整可能胜任。但事件不老是如斯,偶然为了完成某个功效,必需借助于操纵体系的内部顺序(或许称之为下令),如许能够做到事半功倍。那末,能否能够在PHP剧本中挪用内部下令呢?假如能,怎样去做呢?有些甚么方面的顾忌呢?信任你看了本文后,确定可能答复这些成绩了。能否能够?谜底是确定的。PHP和别的的顺序计划言语一样,完整能够在顺序内挪用内部下令,而且是很简略的:只有用一个或几个函数便可。条件前提因为PHP基础是用于WEB顺序开辟的,以是保险性成了人们斟酌的一个主要方面。因而PHP的计划者们给PHP加了一个门:保险形式。假如运转在保险形式下,那末PHP剧本中将遭到以下四个方面的限度:履行内部下令在翻开文件时有些限度衔接MySQL数据库基于HTTP的认证在保险形式下,只要在特定名目中的内部顺序才能够被履行,对别的顺序的挪用将被谢绝。这个名目能够在php.ini文件顶用 safe_mode_exec_dir指令,或在编译PHP是加上--with-exec-dir选项来指定,默许是 /usr/local/php/bin。假如你挪用一个应当能够输入成果的内部下令(意义是PHP剧本没有过错),失掉的倒是一片空缺,那末很能够你的网管曾经把PHP运转在保险形式下了。怎样做?在PHP中挪用内部下令,能够用以下三种方式来完成:1) 用PHP供给的特地函数PHP供给共了3个特地的履行内部下令的函数:system(),exec(),passthru()。system()原型:string system (string command [, int return_var])system()函数很别的言语中的差未几,它履行给定的下令,输入和前往成果。第二个参数是可选的,用来失掉下令履行后的状况码。例子:system("/usr/local/bin/webalizer/webalizer");?>exec()原型:string exec (string command [, string array [, int return_var]])exec ()函数与system()相似,也履行给定的下令,但不输入成果,而是前往成果的最初一行。固然它只前往下令成果的最初一行,但用第二个参数array 能够失掉完全的成果,方式是把成果逐行追加到array的开头处。以是假如array不是空的,在挪用之前最好用unset()最它清掉。只要指定了第二个参数时,才能够用第三个参数,用来获得下令履行的状况码。例子:exec("/bin/ls -l");exec("/bin/ls -l", $res);exec("/bin/ls -l", $res, $rc);?>passthru()原型:void passthru (string command [, int return_var])passthru()只挪用下令,不前往任何成果,但把下令的运转成果原样地间接输入到尺度输入装备上。以是passthru()函数常常用来挪用象pbmplus(Unix下的一个处置图片的东西,输入二进制的原始图片的流)如许的顺序。一样它也能够失掉下令履行的状况码。例子:header("Content-type: image/gif");passthru("./ppmtogif hunte.ppm");?>2) 用popen()函数翻开过程下面的方式只能简略地履行下令,却不能与下令交互。但有些时间必需向下令输出一些货色,如在增添Linux的体系用户时,要挪用su来把以后用户换到root才行,而su下令必需要在下令行上输出root的暗码。这类情形下,用下面提到的方式明显是不可的。popen ()函数翻开一个过程管道来履行给定的下令,前往一个文件句柄。既然前往的是一个文件句柄,那末便可以对它读和写了。在PHP3中,对这类句柄只能做繁多的操纵形式,要末写,要末读;从PHP4开端,能够同时读和写了。除非这个句柄是以一种形式(读或写)翻开的,不然必需挪用pclose()函数来封闭它。例子1:$fp=popen("/bin/ls -l",<

上一篇:php mysql查询类-网络编程

下一篇:没有了