Я пытаюсь запустить консольное приложение из терминала, но получаю эту ошибку
Calling unknown method: yii\console\Application::getSession()
это контроллер
class BeanstalkController extends \yii\console\Controller {
public function actionIndex() {
echo 'this is console action';
} }
и это конфиг консоли
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'modules' => [],
'components' => [
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'common\models\Users',
'enableAutoLogin' => TRUE,
],
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,];
Я попытался удалить сеанс из конфигурации, но все еще получаю ошибку сеанса.
Кто-нибудь может помочь?
Вы не можете использовать Application::getSession()
так как yii\console\Aplication
отличается от веб-приложения.
http://www.yiiframework.com/doc-2.0/yii-console-application.html
Попробуйте добавить сессионный компонент в вашу конфигурацию.
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'modules' => [],
'components' => [
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'common\models\Users',
'enableAutoLogin' => TRUE,
],
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'session' => [
'class' => 'yii\web\Session'
],
],
'params' => $params,
];
И использовать его как компонент
Yii::$app->session->get('session');
Поэтому причина, по которой все опробованные мной варианты не работают, заключается в том, что моя версия Yii2 устарела, и мне пришлось обновить ее до последней версии, чтобы все работало идеально.
Спасибо вам за помощь.
В console/config/main.php
:
return [
'components' => [
'user' => null,
// and put there other components which use a PHP-session
]
]
Правильный конфиг в консоли env:
'components' => [
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\User',
'enableSession' => false,
'enableAutoLogin' => false,
],
],