Run Linux command from Symfony command

Issue

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

E.g. I want to run ssh [email protected] -p port at the end of the command…

I’ve tried:

$input = new StringInput('ssh [email protected] -p port');
$this->getApplication()->run($input, $output);

But that throws the following exception: `The “-p” option does not exist.“

It seems to be executed in the same “context” of my Symfony command.

Solution

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 finishes
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}

echo $process->getOutput();

RESULT:

total 36
4 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 .htaccess
4 -rw-rw-r--  1 me me 1203 Jun 13  2016 app.php
4 -rw-rw-r--  1 me me 1240 Jun 13  2016 app_dev.php
4 -rw-rw-r--  1 me me 1229 Jun 13  2016 app_test.php
4 drwxrwxr-x  2 me me 4096 Mar  2 17:05 bundles
4 drwxrwxr-x  2 me me 4096 Jul 24  2015 css
4 -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');

Answered By – BentCoder

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published