exec() executes the given command, however it does not output anything. It simply returns the last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.
If the output argument is present, then the specified array will be filled with every line of output from the command. Line endings, such as \n, are not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().
If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.
警告 |
如果想允许用户输入的数据被传入此函数,则需要使用 escapeshellarg() 或 escapeshellcmd() 来确保用户不能欺骗系统从而执行任意命令。 |
注: 如果你用此函数启动一个程序并希望保持在后台运行,必须确保该程序的输出被重定向到一个文件或者其它输出流去,否则 PHP 会在程序执行结束后挂起。
注: 在打开了安全模式时,只能执行在 safe_mode_exec_dir 之内的程序。为实用起见当前不能在指向程序的路径中包含 .. 成分。
警告 |
在打开了安全模式时,任何初始命令字符串之后的词都被看成一个单一的参数。因此,echo y | echo x 就成了 echo "y | echo x"。 |
See also system(), passthru(), popen(), escapeshellcmd() pcntl_exec(), and the backtick operator.