![](/img/trans.png)
[英]yii Property “CWebUser.bootstrap” is not defined and can't access gii
[英]Yii can't start gii
我正在使用PHP Yii Framework开发网站,我现在正在堆栈,我需要启动gii,但我不能这样做。 当我输入www.example.com/index.php/gii或www.example.com/gii时,它会给我这个错误:
/gii/default/login // <- website redirects to here
This webpage has a redirect loop
The webpage at http://www.example.com/gii/default/login has resulted in too many redirects.
Clearing your cookies for this site or allowing third-party cookies may fix the problem.
If not, it is possibly a server configuration issue and not a problem with your computer.
我不认为错误是因为修改了htaccess和主配置,但无论如何这里是main.php配置文件:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'site/page/<view:\w+>'=>'site/page',
'<controller:\w+>/<cact:\w+>/<action:\w+>'=>'<controller>/<cact>',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
和.htaccess:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
#non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule ^.*$ /index.php [L]
所以,你能帮助我吗?
要使用此路径: index.php?r=gii/default/login
,您必须关闭/protected/config/main.php
的url管理器
还要检查urlManager
的rules
。 这对我来说是个问题:
'components' => array(
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
// ...
// will handle `gii/default/login` uri and makes infinite redirection loop circle
'<controller:\w+>/<action:\w+>/<sub_action:\w+>'=>'<controller>/<action>',
// ...
),
),
),
就像FelikZ提到的那样 ,这可能是因为你在一个使用\\w+
而不是默认\\d+
的规则中创建了第三个参数,因此将匹配“gii”作为控制器,“default”作为动作,“login”作为ID(或子动作,或任何提到的)。
我的规则如下:
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
修复是添加以下作为第一个规则,以使gii命中正确的位置:
'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',
这应该使您的整个urlManager
配置看起来像下面这样:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
检查配置文件中的gii模块是否存在且是否已取消注释。 如果gii不在那里,你应该在模块数组中添加它。
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>***choose a password***
),
),
对于GII更多信息点击这里
出现此问题是因为OP的两个会话,例如cookie PHPSESSID有两个域.site.ru和admin.site.ru两个不同的会话。 删除PHPSESSID cookie并登录gii
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.