Задать вопрос
@alxsmrn

Как перенсти веб контроллер yii2 в консольный?

Необходимо перенести веб контроллер в консольный. Создал консольный контроллер в папке basic/commands скопировал туда код. Запускаю котроллер, выводит ошибку
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

in /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Connection.php:547

Stack trace:
#0 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Connection.php(858): yii\db\Connection->open()
#1 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Connection.php(845): yii\db\Connection->getMasterPdo()
#2 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Command.php(219): yii\db\Connection->getSlavePdo()
#3 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Command.php(834): yii\db\Command->prepare(true)
#4 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Command.php(362): yii\db\Command->queryInternal('fetchAll', NULL)
#5 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(198): yii\db\Command->queryAll()
#6 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(97): yii\db\mysql\Schema->findColumns(Object(yii\db\TableSchema))
#7 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/Schema.php(146): yii\db\mysql\Schema->loadTableSchema('news')
#8 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/ActiveRecord.php(296): yii\db\Schema->getTableSchema('news')
#9 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/ActiveRecord.php(330): yii\db\ActiveRecord::getTableSchema()
#10 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/BaseActiveRecord.php(422): yii\db\ActiveRecord->attributes()
#11 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/db/BaseActiveRecord.php(264): yii\db\BaseActiveRecord->hasAttribute('title')
#12 /opt/lampp/htdocs/basic/commands/HellController.php(59): yii\db\BaseActiveRecord->__set('title', '1C.Drop.1 ?????...')
#13 /opt/lampp/htdocs/basic/commands/HellController.php(113): app\commands\HellController->Fullparse('h2.post__title', '.post__body_cro...', 'a.post__title_l...', '.html_format', 'https://habraha...', '1', '???????????? ??...', '1C.Drop.1 ?????...')
#14 [internal function]: app\commands\HellController->actionIndex()
#15 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
#16 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/base/Controller.php(154): yii\base\InlineAction->runWithParams(Array)
#17 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/console/Controller.php(108): yii\base\Controller->runAction('index', Array)
#18 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/base/Module.php(454): yii\console\Controller->runAction('index', Array)
#19 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/console/Application.php(167): yii\base\Module->runAction('hell/index', Array)
#20 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/console/Application.php(143): yii\console\Application->runAction('hell/index', Array)
#21 /opt/lampp/htdocs/basic/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#22 /opt/lampp/htdocs/basic/yii(20): yii\base\Application->run()
#23 {main}
. Тот же контроллер но веб работает без замечаний. Как я думаю, ошибка в том что не видит модель News. Вот код всего, что использую
use yii\console\Controller;
use keltstr\simplehtmldom\SimpleHTMLDom;
use app\models\News;

Куда нужно перенести модель, или как прописать полный путь к ней? Или вообще ошибка не в этом?
  • Вопрос задан
  • 813 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Проблема скорее всего в конфигах, ошибка-то в подключении к БД,
Ответ написан
@gof
Yii тут ни при чем.. Чесслово, первая ссылка в гугле:
Ответ написан
Комментировать
vitovt
@vitovt
Заходите в папку common/config там должно быть main.php или main-local.php если для локалхоста проверяете. Туда вносите конфиг подключения к базе

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=dbname',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            'useFileTransport' => true,
        ],
    ],
];


Иногда бывает так, что через консоль localhost не срабатывает (у меня в облаке Scaleway так). Тогда надо написать

'dsn' => 'mysql:host=127.0.0.1;dbname=dbname',
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы