簡體   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