Как применить исправление для исправления ошибок в проекте Symfony?

У меня есть приложение, использующее symfony3, и некоторые клиенты используют его. Я планирую исправить ошибку, загрузив код патча онлайн.

Но вы знаете, что когда код исправления перезаписывает код проекта, вы должны выполнить следующую команду, чтобы код исправления вступил в силу.

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

К сожалению, эта команда может быть выполнена только в режиме cli;

Как я могу реализовать эту функцию?

Наконец, пожалуйста, прости меня за мой плохой английский.: Simle:

1 ответ

Вы можете использовать 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, чтобы обернуть свои команды cli

Другие вопросы по тегам