Контроллер консоли вызова Yii2 / действие в бэкэнд-контроллере

Я критиковал контроллер

SiteMapController.php

с действием

index

в папке консоли Yii2
Контроллер консоли вызова Yii2 / действие в бэкэнд-контроллере
и я могу запустить его из командной строки. Контроллер консоли вызова Yii2 / действие в бэкэнд-контроллере
Но мне нужно запустить его с контроллера папки backend / controllers. это означает, что я должен запустить действие index контроллера SiteMapController.php из действия внутреннего контроллера Yii2. Вот мой тестовый код, но он не работает. Бэкэнд / контроллеры / BlogController.php

private function runSiteMapGenerate(){
    $cr = new ConsoleRunner(['file' => '@console']);
    $cr->run('site-map');
}

Я пробовал оба скрипта

"vova07/yii2-console-runner-extension": "*",
"tebazil/yii2-console-runner": "^0.0.0"

Но это не помогает запустить index

У меня больше нет вариантов.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
0
0
1 275
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Найдите каталог yii с помощью chdir и запустите следующий shell_exec. Используя это, вы можете упростить его и не устанавливать никаких расширений.

chdir('../yiifolder'); //folder that contains yii
$output = shell_exec('php yii migrate');
var_dump($output);

Это проверено на моем сервере.

Выход:

string 'Yii Migration Tool (based on Yii v2.0.6)

No new migration found. Your system is up-to-date.
' (length=93)

Если вы используете vova07 / yii2-консоль-бегун-расширение, вам нужно установить файл как путь к сценарию yii, который обычно находится в корневой папке - вы не указываете здесь каталог консоли. Поэтому очень вероятно, что вы создадите объект следующим образом:

// assuming you have file 'yii' in the root directory:
$cr = new ConsoleRunner(['file' => '@app/yii']);

Тогда фактический вызов должен работать:

// assuming that 'index' is the default action
$cr->run('site-map');
// or
$cr->run('site-map/index');

Информация: если консольная команда должна быть выполнена, вы фактически вызываете yii с некоторыми параметрами для команды. Вы не вызываете команду напрямую. yii запускает консольное приложение. Просто загляните в этот файл. Он является частью шаблонов проектов yii2-приложение-продвинутый (присутствует, если сценарий init был выполнен при установке) и yii2-app-basic.

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