Symfony2 Process :: start()在生产环境中运行时失败

问题描述:

我正在使用Symfony2 Process组件来触发生成相当大报表的cli脚本。在这一点上,我使用ajax来监视它的进度,并在前端显示进度条。在app_dev.php中执行以下代码时,它运行完美并且没有问题。但是,当我在生产中运行它时,它无法启动Process()。Symfony2 Process :: start()在生产环境中运行时失败

这里是我的代码:

public function generateAction($reportSlug) 
    { 
     $this->wrangler->addMoodleGlobal('CFG'); 
     $time = time(); 

     $commandSlug = "report:{$reportSlug}"; 
     $console = $this->container->get('kernel')->getRootDir() ."/console"; 

     $process = new Process("exec php {$console} {$commandSlug} {$time} > /dev/null 2>/dev/null &"); 

     $process->start(); 

     return $this->renderJson(json_encode(array(
      'success' => true, 
      'message' => "php {$console} {$commandSlug}", 
      'time' => $time 
     ))); 
    } 

我已经运行php app/console cache:clear --env="prod"

以及php app/console cache:warmup --env="prod"

机器人无济于事。

谢谢。

+0

这是共享的托管服务吗?有时共享主机服务不允许执行某些过程,我与hostinger有此问题.... – pbenard 2015-04-01 06:35:50

不知道什么叫真正的问题是,但是当我改了行

$process = new Process("exec php {$console} {$commandSlug} {$time} > /dev/null 2>/dev/null &"); 

使用一个临时的输出文件:

$process = new Process("exec php {$console} {$commandSlug} {$time} > /tmp/output.log 2>/tmp/output.log &"); 

一切开始正常工作。任何人都可以对此有所了解吗?