PHP之exec

2 views
Skip to first unread message

Jerry

unread,
Jul 27, 2006, 10:09:22 PM7/27/06
to jerry66x
exec -- 运行一个外部程序

描述

string exec( string command [, array output [, int return_var]] )

exec()运行给定的command,然而它并不产生任何输出。
它简单地返回命令运行结果的最后一行。
如果需要运行一个命令并且想要直接而无任何中断地取得所有的命令运行时产生的数据,
可以使用passthru()函数。

如果output参数被使用,则这个数组将被命令输出的每行内容所填满。
行结束符,比如\n,并不被包含在该数组中。注意,如果该数组已经包含了某些元素,
exec()将自动尾加到该数据的后部。 如果不想这样,
可在运行exec()之前调用unset()函数。

如果参数return_var与output一块被使用,
则返回运行命令的状态将被写入到该变量中。

例子 1. exec() 实例

<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
echo exec('whoami');
?>

警告

如果想要允许来自用户输入的数据被传送至这个函数,
则应该使用escapeshellarg()或escapeshellcmd()来确定用户是否运行了危险的命令。

注:如果使用该函数开启了一个程序并想使其在后台执行,则必须确定那个程序的输出被重定向到一个文件、其它的某些输出流或者其它PHP将挂起直到该程序运行结束。

注:当safe_mode被激活,则只能运行在由safe_mod_exec_dir指定的目录中的可执行文件。由于特殊原因这个是不给允许的,除非在特别的情况下。

警告

随着safe_mode被激活,
所有下列初始化命令的词都被认为是一个单一的参数。因此,echo
y | echo x就成了"y | echo x"。

参见 system(),passthru(), popen(), escapeshellcmd(),
和执行运算符。

Reply all
Reply to author
Forward
0 new messages