Symfony进程-从服务执行命令

6tdlim6h  于 2023-02-24  发布在  其他
关注(0)|答案(2)|浏览(167)

如何通过新进程在服务中运行命令(app/console execute:my:command)?
我试着这样做:

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

$process = new Process(
    'app/console execute:my:command'
);
$process->start();

但是什么也没发生...如果我通过终端手动调用它,它就能工作:

app/console execute:my:command

我哪里做错了?
编辑-解决方案:我们需要写出整个路径。在我的例子中:
一个二个一个一个

egmofgnx

egmofgnx1#

这几乎就是您真正需要做的全部工作。我总是设置工作目录,并假设这是必要的,以便Symfony命令从项目的根目录运行

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

$process->start();

出于调试目的,我通常设置

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

同样

pod7payv

pod7payv2#

我无法让setWorkingDirectory函数在Windows上正常工作...
在Symfony〉= 4.4的Windows上,fromShellCommandline函数更适合我:

$cmd = sprintf('php %s/bin/console %s', 
    $this->getParameter('kernel.project_dir'), 
    'app:my:command'
);

Process::fromShellCommandline($cmd)->run();

希望这对其他人有帮助!

相关问题