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

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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
143
1

Ответы 1

Для этого можно использовать Компонент процесса Symfony:

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();

На самом деле у вас есть несколько решений:

  • Реализуйте этот код в контроллере, доступном только вам.
  • Если вы используете средство развертывания, такое как капистрано, анзибль или любую другую технологию, просто добавьте команду cli, которую вы хотите выполнить, и инициируйте выполнение после развертывания исправления.

вы также можете создать Команда Symfony, чтобы обернуть ваши команды cli

Привет спасибо! вы можете не понимать мою проблему; горячий патч для моих клиентов, они используют мой проект; Я надеюсь, что они смогут завершить обновление патча несколькими щелчками мыши в браузере; как кнопка "Нажмите, чтобы обновить"

slince 10.07.2018 07:53

Привет! Вы хотите исправить ошибку, обнаруженную в коде, верно? Итак, вы развертываете новую версию кода в своей производственной среде? Если вы хотите, вы можете создать контроллер действий, чтобы, когда пользователь нажимает «Щелкните для обновления», вы выполняете код CLI внутри контроллера, а затем он очищает кеш, вот и все.

Franck Gamess 10.07.2018 07:56

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