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);
?>