![](/img/trans.png)
[英]session_set_cookie_params - domain parameters correct value to use
[英]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.