How to retrieve PHP exec() error responses? How to retrieve PHP exec() error responses? shell shell

How to retrieve PHP exec() error responses?


The following code will capture both the normal output (from StdOut) and the error output (from SdtErr).

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess' . '2>&1',$output);var_dump($output);


The $output parameter does not appear to work if the calling program spits output to STDERR.

A better way to handle this is to redirect the output from exec to a file and then display the contents of that file if there is an error condition.

If $cmd holds the exec command add something like this:

$cmd.=" > $error_log 2>&1"

Then examine the contents of the filespec in $error_log for detailed info on why the command failed.

Also note that if you fork this off with a & at the end of the command, an immediate check of the contents of $error_log may not reveal the log information - the script may check/process the file before the OS has finished.


This worked for me in several scenarios:

 ob_start(); exec($cmd . " 2>&1", $output); $result = ob_get_contents(); ob_end_clean(); var_dump($output);

The space between " 2 is important