Call to a member function validateCsrfToken() on string
下午刚装一个2.7.2 完成后直接报错
本文由 OneSmile 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。
信息太少
@johocn #1楼 完全配置,安装完成后,直接访问,前后台都出现这个问题
我这边也是
描述问题是一种能力,这个帖子看不到
我这边升完级2.7.2也报这个错误,链接:appfront首页,报错信息: Call to a member function validateCsrfToken() on string 回退2.6.0,系统正常了 composer require "fancyecommerce/fecshop:2.6.0"
无论你们怎么叫,不把报错信息写清楚,就没法解决。
找到/vendor/yiisoft/yii2/web/Controller.php 在200行左右
public function beforeAction($action) { if (parent::beforeAction($action)) { if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !$this->request->validateCsrfToken()) { throw new BadRequestHttpException(Yii::t('yii', 'Unable to verify your data submission.')); } return true; } return false; }
将!$this->request->validateCsrfToken()替换成!Yii::$app->getRequest()->validateCsrfToken()
改成这样可以,不懂php,有问题还请纠正
@wileep #8楼
1.这种修改,去动yii2框架的代码,本身就是错误的
2.上面说了,出现报错,把报错写信全部贴出来,没有一个把报错全部贴出来,写清楚
报错信息不全,帮不上忙。
同样的问题。 复制出来的报错信息是乱的,只能截图了。
@louis #11楼 宝塔安装,还是composer安装的?
@louis #11楼 多谢你的报错贴图
错误已经定位,这个是yii2更新导致的问题:https://github.com/yiisoft/yii2/blob/master/framework/base/Controller.php#L105
yii2加入类变量 $request , 在init函数中初始化,因此如果重写controller的init方法,必须执行 parent:init; , 否则就会出这个报错,而fecmall的有一些controller重新init方法,但是没有执行 parent:init;导致的controller 中的$this->request没有初始化导致的问题。
parent:init;
后面发版处理这个问题。
@Fecmall #13楼 很高兴能帮上忙。
已经发版 2.7.3 composer 和宝塔下载源都更新了
Q群文件也更新了
请下载最新版本2.7.4版本
2.7.4版本发布:http://www.fecmall.com/topic/4322