2017-02-06 6 views
1

Я хочу запустить yii2 консольную команду, то я проверить его с ходу это ./yiiПолучение неизвестное свойство: юй консоли Application :: сеанс во время запуска ./yii

Когда я бегу ./yii я получил этот ответ

Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: yii\console\Application::session' 

in /var/www/html/myweb/vendor/yiisoft/yii2/base/Component.php:143 

Stack trace: 
#0 /var/www/html/myweb/vendor/yiisoft/yii2/di/ServiceLocator.php(73): yii\base\Component->__get('session') 
#1 /var/www/html/myweb/vendor/kartik-v/yii2-grid/Module.php(62): yii\di\ServiceLocator->__get('session') 

Вот мой common/config/params-local.php

return [ 
     'uploadPath' => __DIR__ .'/../../uploads/', 
     'baseurl' => 'http://localhost/myweb/' 
]; 

Вот мой common\config\params.php

<?php 
return [ 
    'adminEmail' => '[email protected]', 
    'supportEmail' => '[email protected]', 
    'user.passwordResetTokenExpire' => 3600, 
]; 

Вот мой console\config\params-local.php

<?php 
return [ 
]; 

Вот мой console\config\params.php

<?php 
return [ 
    'adminEmail' => '[email protected]', 
]; 

Вот мой common\config\main.php

<?php 
return [ 
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 
    'components' => [ 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ],  
    ], 
    'modules' => [ 
      'redactor' => [ 
        'class' => 'yii\redactor\RedactorModule', 
        'uploadDir' => __DIR__ .'/../../uploads/konten', 
        'uploadUrl' => '/myweb/uploads/konten', 
        'imageAllowExtensions'=>['jpg','png','gif'] 
      ], 

      'gridview' => [ 
        'class' => '\kartik\grid\Module', 
      ] 

    ], 
]; 
Вот мой common\config\main-local.php

<?php 
return [ 
    'language' => 'en-US', 
    'sourceLanguage' => 'id-ID', 
    'components' => [ 
      'authClientCollection' => [ 
        'class' => 'yii\authclient\Collection', 
        'clients' => [ 
          'google' => [ 
            'class' => 'yii\authclient\clients\Google', 
            'clientId'  => 'xxxxx-cppd86jm9qfrt77pc684pau01nilf261.apps.googleusercontent.com', 
          ], 
          'facebook' => [ 
            'class' => 'yii\authclient\clients\Facebook', 
            'authUrl' => 'https://www.facebook.com/dialog/oauth?display=popup', 
            'clientId'=> 'xxxxxx16917400', 
            'clientSecret' => 'xxxxxx8d99ff80ce1f713424', 
          ], 
        ], 
      ], 

     'db' => [ 
       'class' => 'yii\db\Connection', 
       'dsn' => 'pgsql:host=192.168.0.106;dbname=mydb', 
       'username' => 'dev', 
       'password' => 'dev123', 
       'charset' => 'utf8', 
       'enableSchemaCache' => false, 
       'schemaMap' => [ 
        'pgsql'=> [ 
        'class'=>'yii\db\pgsql\Schema', 
        'defaultSchema' => 'public2' //specify your schema here 
        ] 
       ], // PostgreSQL 
     ], 

     'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      'viewPath' => '@common/mail', 
      // send all mails to a file by default. You have to set 
      // 'useFileTransport' to false and configure a transport 
      // for the mailer to send real emails. 
      'useFileTransport' => true, 
     ], 

     'mail' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      'viewPath' => '@backend/mail', 
      'useFileTransport' => false,//set this property to false to send mails to real email addresses 
      //comment the following array to send mail using php's mail function 

      'transport' => [ 
        'class' => 'Swift_SmtpTransport', 
        'host' => 'iix70.hosting.com', 
        'username' => 'myuser', 
        'password' => 'mypass', 
        'port' => '465', 
        'encryption' => 'ssl', 
      ], 
     ], 
     'i18n' => [ 
     'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => '../../messages', 
       'sourceLanguage' => 'id-ID', 
       'fileMap' => [ 
        'app' => 'app.php', 
       ], 
      ], 


     ], 
    ], 
    ] 
]; 

Похоже, что-то неправильно с моим сценарием. В настоящее время я использую ubuntu.

Что делать дальше, если это исправить?, поэтому он должен отвечать с помощью списка команд yii вместо ошибки.

и что вызывают эти ошибки?

Заранее спасибо.

+0

Включите 'params-local.php'. – topher

+0

Консольное приложение не имеет сеанса, я считаю. Сеанс включает файл cookie, и я не считаю, что консольное приложение может это обработать. –

+0

@topher, в каком файле я должен включить 'params-local.php'? @MihaiP. то как исправить эту ошибку? Заранее спасибо. –

ответ

4

При добавлении значения в файлы common/config папки, конфигурации, используемые во всех приложениях, таких как backend, frontend, console, api и другие. Поэтому в расширенном шаблоне вы должны просто добавить значения, связанные со всеми этими приложениями. На основе documentationcommon папка файлы, общие для всех приложений. Эта картина показывает это ясно:

enter image description here

Для вашей проблемы, как и другие упомянутые, не имеют каких-либо session в консоли, но вы добавили или использовать этот модуль в common/config/params-local.php и основан на введении этого ответа, он будет использоваться в console/config/params-local.php, и вы получите сообщение об ошибке :).

Update: на основе обновленной вопрос, файл common/config/main.php является:

<?php 
return [ 
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 
    'components' => [ 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ],  
    ], 
    'modules' => [ 
      'redactor' => [ 
        'class' => 'yii\redactor\RedactorModule', 
        'uploadDir' => __DIR__ .'/../../uploads/konten', 
        'uploadUrl' => '/myweb/uploads/konten', 
        'imageAllowExtensions'=>['jpg','png','gif'] 
      ], 

      'gridview' => [ 
        'class' => '\kartik\grid\Module', 
      ] 

    ], 
]; 

gridviw модуль, неявно использует session для сохранения состояния сортировки. В другой стороне вы добавили это в папку configcommon, поэтому, основываясь на предыдущих заметках, она также будет использоваться в приложении console.Консоль не имеет session (и я думаю, что вам не нужен вид сетки в консоли: D), и это вызывает ошибку. Для решения этой проблемы, переместите эти строки

'modules' => [ 
       'redactor' => [ 
         'class' => 'yii\redactor\RedactorModule', 
         'uploadDir' => __DIR__ .'/../../uploads/konten', 
         'uploadUrl' => '/myweb/uploads/konten', 
         'imageAllowExtensions'=>['jpg','png','gif'] 
       ], 

       'gridview' => [ 
         'class' => '\kartik\grid\Module', 
       ] 

     ], 

к main.php из frontend или backend папки (в зависимости от вашей ситуации и использования).

+0

жаль, что я все еще не понял, как это исправить, поэтому я обновляю свой вопрос с помощью кода в параметрах params-local.php и paramsphp –

+0

@DarkCyber. Поэтому я думаю, что проблема заключается в вашей 'common/config/main.php' или 'common/config/main-local.php'. Можете ли вы приложить их к своему вопросу? Можете ли вы добавить модуль 'yii2-grid' в раздел' modules' одного из этих файлов. – meysam

+0

обновлено, надеюсь, вам это поможет –

Смежные вопросы