background image

passthru()
原型:

void passthru (string command [, int return_var])

passthru()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出
设备上。
所以

passthru()函数经常用来调用象 pbmplus(Unix 下的一个处理图片的工具,输出二进制

的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。
例子:

代码示例

:

<?php
header(""Content-type: image/gif"");
passthru(""./ppmtogif hunte.ppm"");
?>
2,用 popen()函数打开进程
以上方法只能简单地执行命令,却不能与命令交互。但有些时候必须向命令输入一些东西,
如在增加

Linux 的系统用户时,要调用 su 来把当前用户换到 root 才行,而 su 命令必须要在

命令行上输入

root 的密码。这种情况下,用上面提到的方法显然是不行的。

popen()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个
文件句柄,那么就可以对它读和写了。在

PHP3 中,对这种句柄只能做单一的操作模式,要

么写,要么读;从

PHP4 开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)

打开的,否则必须调用

pclose()函数来关闭它。

例子

1:

代码示例

:

<?php
$fp=popen(""/bin/ls -l"", ""r"");
?>
例子

2:

 
代码示例

:

<?php
/* 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);
?>