Run Linux command from Symfony command Run Linux command from Symfony command symfony symfony

Run Linux command from Symfony command


How can I run a simple Linux command in a Symfony command?

First of all, try to execute a simple/plain command (ls) to see what happens, then move on to your special command.

http://symfony.com/doc/current/components/process.html

CODE:

use Symfony\Component\Process\Process;use Symfony\Component\Process\Exception\ProcessFailedException;$process = new Process('ls -lsa');$process->run();// executes after the command finishesif (!$process->isSuccessful()) {    throw new ProcessFailedException($process);}echo $process->getOutput();

RESULT:

total 364 drwxrwxr-x  4 me me 4096 Jun 13  2016 .4 drwxrwxr-x 16 me me 4096 Mar  2 09:45 ..4 -rw-rw-r--  1 me me 2617 Feb 19  2015 .htaccess4 -rw-rw-r--  1 me me 1203 Jun 13  2016 app.php4 -rw-rw-r--  1 me me 1240 Jun 13  2016 app_dev.php4 -rw-rw-r--  1 me me 1229 Jun 13  2016 app_test.php4 drwxrwxr-x  2 me me 4096 Mar  2 17:05 bundles4 drwxrwxr-x  2 me me 4096 Jul 24  2015 css4 -rw-rw-r--  1 me me  106 Feb 19  2015 robots.txt

As you can see above, if you put the piece of code in one of your controllers for testing purposes, ls -lsa lists files/folders stored under web folder!!!

You can just do shell_exec('ls -lsa'); as well which is what I sometimes do. e.g. shell_exec('git ls-remote url-to-my-git-project-repo master');


As far as I know, and I don't know much about Symfony, you have to specifiy the options before username@host. Check it here: http://linuxcommand.org/man_pages/ssh1.html

In you case:

'ssh -p port username@host'


This is the updated interface, used in Symfony 5.2. The process constructor now requires an array as input.

source: https://symfony.com/doc/current/components/process.html

The Symfony\Component\Process\Process class executes a command in asub-process, taking care of the differences between operating systemand escaping arguments to prevent security issues. It replaces PHPfunctions like exec, passthru, shell_exec and system

use Symfony\Component\Process\Exception\ProcessFailedException;use Symfony\Component\Process\Process;$process = new Process(['ls', '-lsa']);$process->run();// executes after the command finishesif (!$process->isSuccessful()) {    throw new ProcessFailedException($process);}echo $process->getOutput();