中国数据网
http://www.dbchina.net
收藏本页
联系我们
 
用PoPen()函数打开进程 ~ admin
 2) 上面的方法只能简单地执行命令,却不能与命令交互。但有些时候必须向命令输入一些东西,如在增加Linux的系统用户时,要调用su来把当前用户换到root才行,而su命令必须要在命令行上输入root的密码。这种情况下,用上面提到的方法显然是不行的。

  PoPen()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个文件句柄,那么就可以对它读和写了。在PHP3中,对这种句柄只能做单一的操作模式,要么写,要么读;从PHP4 开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用Pclose( )函数来关闭它。

例子1:
$#@60;?
 $fP=PoPen("/bin/ls -l", "r");
?$#@62;


例子2(本例来自PH P中国联盟网站httP://www.PhPx.com/show.PhP?d=col&i=51):
$#@60;?
/* PHP中如何增加一个系统用户
下面是一段例程,增加一个名字 为james的用户,
root密码是 verygood。仅供参考
*/
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootPasswd = "verygood";
$user = "james";
$user_add = sPrintf("%s "%s %s"",$sucommand,$useradd,$user);
$fP = @PoPen($user_add,"w");
@fPuts($fP,$rootPasswd);
@Pclose($fP);
?$#@62;

3) 用反撇号(`,也就是键盘上ESC键下面的那 个,和~在同一个上面)

  这个方法以前没有归入PHP的文档,是作为一个秘技存在的。方法很简单,用两个反撇号把要执行的命令括起来作为一个表达式,这个表达式的值就是命令执行的结果。如:

$#@60;?
$res=`/bin/ls -l`;
echo "$#@60;b$#@62;$#@60;Pre$#@62;".$res."$#@60;Pre$#@62;$#@60;/b$#@62;";
?$#@62;

这个脚本的输出就象:
hunte.gif
hunte.PPm
jPg.htm
jPg.jPg
Passthru.PhP

Copyright ©2006-2009 DbChina.Net | 鲁ICP备05031207号