Yii2 控制台应用程序 - cookieValidationKey 配置错误
Yii2 console app - cookieValidationKey config errors
我已经在 backend\config\main.php
和 frontend\config\main.php
中配置了 cookieValidationKey
并将其从 common\config\main.php
中删除。但是当我在命令行中 运行 php yii
时。我收到这个错误。
甚至在我将它设置到我的后端配置之前,当我使用命令行时就出现了错误。
$ php yii
Exception 'yii\base\UnknownPropertyException' with message 'Setting unknown property: yii\console\Request:
:cookieValidationKey'
in D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Component.php:201
Stack trace:
#0 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\BaseYii.php(525): yii\base\Component->__set('cook
ieValidatio...', '9H2hvsco52yQ0N2...')
#1 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(Obje
ct(yii\console\Request), Array)
#2 [internal function]: yii\base\Object->__construct(Array)
#3 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\Container.php(381): ReflectionClass->newInstan
ceArgs(Array)
#4 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\Container.php(156): yii\di\Container->build('y
ii\console\Req...', Array, Array)
#5 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\con
sole\Req...', Array, Array)
#6 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\ServiceLocator.php(135): yii\BaseYii::createOb
ject(Array)
#7 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\console\Application.php(219): yii\di\ServiceLocat
or->get('request')
#8 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Application.php(380): yii\console\Applicatio
n->getRequest()
#9 D:\web\wamp64\www\html\royall.dev\yii(27): yii\base\Application->run()
#10 {main}
为什么会这样?我的 console\config\main.php
里面没有 cookieValidationKey
所以它不应该弹出这个错误。
我使用 windows 和 wamp-server 但我在 Ubuntu 服务器上测试了它,它返回了同样的错误。
那是因为您的控制台命令在执行实际操作之前组合了所有配置。有一些配置参数对控制台操作无效但对 Web 请求有用。解决方案是在执行控制台操作之前删除这些参数。
添加以下行
unset($config['components']['request']);
之前
$application = new yii\console\Application($config);
在文件 yii
中。
因为我通过 vagrant 运行 网络服务器,所以我没有测试通过 yii 命令对网络应用 运行 是否有副作用。
我已经在 backend\config\main.php
和 frontend\config\main.php
中配置了 cookieValidationKey
并将其从 common\config\main.php
中删除。但是当我在命令行中 运行 php yii
时。我收到这个错误。
甚至在我将它设置到我的后端配置之前,当我使用命令行时就出现了错误。
$ php yii
Exception 'yii\base\UnknownPropertyException' with message 'Setting unknown property: yii\console\Request:
:cookieValidationKey'
in D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Component.php:201
Stack trace:
#0 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\BaseYii.php(525): yii\base\Component->__set('cook
ieValidatio...', '9H2hvsco52yQ0N2...')
#1 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(Obje
ct(yii\console\Request), Array)
#2 [internal function]: yii\base\Object->__construct(Array)
#3 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\Container.php(381): ReflectionClass->newInstan
ceArgs(Array)
#4 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\Container.php(156): yii\di\Container->build('y
ii\console\Req...', Array, Array)
#5 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('yii\con
sole\Req...', Array, Array)
#6 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\di\ServiceLocator.php(135): yii\BaseYii::createOb
ject(Array)
#7 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\console\Application.php(219): yii\di\ServiceLocat
or->get('request')
#8 D:\web\wamp64\www\html\royall.dev\vendor\yiisoft\yii2\base\Application.php(380): yii\console\Applicatio
n->getRequest()
#9 D:\web\wamp64\www\html\royall.dev\yii(27): yii\base\Application->run()
#10 {main}
为什么会这样?我的 console\config\main.php
里面没有 cookieValidationKey
所以它不应该弹出这个错误。
我使用 windows 和 wamp-server 但我在 Ubuntu 服务器上测试了它,它返回了同样的错误。
那是因为您的控制台命令在执行实际操作之前组合了所有配置。有一些配置参数对控制台操作无效但对 Web 请求有用。解决方案是在执行控制台操作之前删除这些参数。
添加以下行
unset($config['components']['request']);
之前
$application = new yii\console\Application($config);
在文件 yii
中。
因为我通过 vagrant 运行 网络服务器,所以我没有测试通过 yii 命令对网络应用 运行 是否有副作用。