goldlife goldlife -4 years ago 260
PHP Question

Symfony Process - execute command from service

How can I run a command (app/console execute:my:command)
in a service via new Process?

I try this:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

$process = new Process(
'app/console execute:my:command'

But nothing happens ...
If I call it manually via terminal it works:

app/console execute:my:command

What am I doing wrong?

EDIT - Solution: We need to write the whole path. In my case:

($this->kernelRootDir is : %kernel.root_dir%)

$processString = sprintf(
'php %s/../app/console %s %s',

$process = new Process($processString);

if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);

Answer Source

This is pretty much all you need to do really. I always set the working directory and assume this is needed so that the Symfony command is run from the root of the project

$process = new Process(
    'app/console execute:my:command'
$process->setWorkingDirectory(getcwd() . "../");


For debugging purposes I generally set

$process->setOptions(['suppress_errors' => false]);

as well

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download