Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Executing linux commands with PHP

I'm trying to execute a linux command through a PHP command-line script, which is no problem using the exec command.

The problem is, the command I am executing (mysqldump) outputs an error message if something is wrong (for example user/password is incorrect). I can't seem to be able to capture this error in order to log it. It just prints this error to the screen.

How do I cause this error not to be printed to the screen, but instead to put it in a variable for use in my script?

Thanks!

like image 218
user49226 Avatar asked Jan 24 '23 21:01

user49226


2 Answers

Use popen to run the process. The example #2 on this page shows exactly what you're looking for:

<?php
error_reporting(E_ALL);

/* Add redirection so we can get stderr. */
$handle = popen('/path/to/spooge 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
like image 141
David Schmitt Avatar answered Jan 26 '23 09:01

David Schmitt


exec("mysqldump -u user -p passwod database >  outputfile.sql 2> error.log");
like image 32
Luis Melgratti Avatar answered Jan 26 '23 10:01

Luis Melgratti