As drawn from http://php.net/ && Chipmunkninja:
The system() Function
The system function in PHP takes a string argument with the command to
execute as well as any arguments you wish passed to that command. This
function executes the specified command, and dumps any resulting text
to the output stream (either the HTTP output in a web server
situation, or the console if you are running PHP as a command line
tool). The return of this function is the last line of output from the
program, if it emits text output.
The exec() Function
The system function is quite useful and powerful, but one of the
biggest problems with it is that all resulting text from the program
goes directly to the output stream. There will be situations where you
might like to format the resulting text and display it in some
different way, or not display it at all.
For this, the exec function in PHP is perfectly adapted. Instead of
automatically dumping all text generated by the program being executed
to the output stream, it gives you the opportunity to put this text in
an array returned in the second parameter to the function:
The shell_exec() Function
Most of the programs we have been executing thus far have been, more
or less, real programs1. However, the environment in which Windows and
Unix users operate is actually much richer than this. Windows users
have the option of using the Windows Command Prompt program, cmd.exe
This program is known as a command shell.
The passthru() Function
One fascinating function that PHP provides similar to those we have
seen so far is the passthru function. This function, like the others,
executes the program you tell it to. However, it then proceeds to
immediately send the raw output from this program to the output stream
with which PHP is currently working (i.e. either HTTP in a web server
scenario, or the shell in a command line version of PHP).
The proc_open() Function and popen()
function
proc_open() is similar to popen() but provides a much greater degree
of control over the program execution. cmd is the command to be
executed by the shell. descriptorspec is an indexed array where the
key represents the descriptor number and the value represents how PHP
will pass that descriptor to the child process. pipes will be set to
an indexed array of file pointers that correspond to PHP's end of any
pipes that are created. The return value is a resource representing
the process; you should free it using proc_close() when you are
finished with it.
proc_open()
andpopen()
, both of which allow a higher degree of control over the spawned process. – Christian