如何应用热补丁修复symfony项目中的错误?

时间:2018-07-10 05:15:09

标签: php symfony symfony-3.4 hotpatching

我有一个使用symfony3的应用程序,有些客户使用它。我计划通过在线下载补丁代码来修复该错误。

但是您知道,当补丁代码覆盖项目代码时,必须执行以下命令以使补丁代码生效。

php php bin/console cache:clear --env=prod chmod -R 777 var/tmp

不幸的是,该命令只能在cli模式下执行;

如何实现此功能?

最后,请原谅我的英语不好。 :simle:

1 个答案:

答案 0 :(得分:0)

您可以使用Symfony Process Component来实现:

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

$process = new Process('php bin/console cache:clear --env=prod && chmod -R 777 var/tmp');
$process->run();

// executes after the command finishes
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}

echo $process->getOutput();

您实际上有多种解决方案:

  • 将此代码实施在您只能访问的控制器中。
  • 如果您使用诸如 capistrano ansible 之类的部署程序或任何其他技术,只需添加要执行的cli命令并在部署补丁程序后触发执行即可。

您还可以创建一个Symfony Command来包装cli命令