繁体   English   中英

Yii2 如何在控制台中使用 Yii\web\session? 错误 session_set_cookie_params(): Session cookie 参数无法更改

[英]Yii2 how to use Yii\web\session in console? ERROR session_set_cookie_params(): Session cookie parameters cannot be changed

我想在控制台中使用 session 来使用 model 中的 function。我在控制台的配置中使用 session,如下所示:

主要.php

main.php 
...


return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console\controllers',
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\console\controllers\FixtureController',
            'namespace' => 'common\fixtures',
          ],
    ],
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning', ],
                ],
            ],
        ],

    
        'session' => [ // for use session in console application
            'class' => 'yii\web\Session',

        ],
      

但我得到这个错误

PHP Warning 'yii\base\ErrorException' with message 'session_set_cookie_params(): Session cookie parameters cannot be changed after headers have already been sent'

in C:\xampp\www\dev_tool\vendor\yiisoft\yii2\web\Session.php:432

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleError(2, 'session_set_coo...', 'C:\\xampp\\www\\...', 432)
#1 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\web\Session.php(432): session_set_cookie_params(Array)
#2 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\web\Session.php(150): yii\web\Session->setCookieParamsInternal()
#3 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\web\Session.php(712): yii\web\Session->open()
#4 C:\xampp\www\dev_tool\console\controllers\ToolboxController.php(1256): yii\web\Session->set('conpanyId', 156)
#5 [internal function]: console\controllers\ToolboxController->actionCalculateQuestionnaireStatusFromQuestionnaire()
#6 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#7 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\base\Controller.php(181): yii\base\InlineAction->runWithParams(Array)
#8 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\console\Controller.php(184): yii\base\Controller->runAction('calculate-quest...', Array)
#9 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\base\Module.php(534): yii\console\Controller->runAction('calculate-quest...', Array)
#10 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\console\Application.php(181): yii\base\Module->runAction('toolbox/calcula...', Array)
#11 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\console\Application.php(148): yii\console\Application->runAction('toolbox/calcula...', Array)
#12 C:\xampp\www\dev_tool\vendor\yiisoft\yii2\base\Application.php(392): yii\console\Application->handleRequest(Object(yii\console\Request))
#13 C:\xampp\www\dev_tool\yii(27): yii\base\Application->run()
#14 {main}

我试图关闭和打开 session。但是没有任何反应......请有人帮助我吗?

谢谢!

你不能也不应该在控制台中使用它。 相反,修改您的 model 以检测控制台应用程序并避免在这种情况下使用 session:

if (Yii::$app instanceof \yii\web\Application) {
    // work with console
}

在控制台中使用 session 是个坏主意,但您的错误是关于“在发送标头后无法更改会话 cookie 参数”——这意味着您在使用 session 之前输出了一些信息。尝试删除代码中的所有 echo/var_dump .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM