Yii não pode iniciar gii
-
14-12-2019 - |
Pergunta
Estou desenvolvendo site com PHP Yii Framework e agora estou stack, preciso iniciar o gii, mas não consigo fazer isso.quando digito www.example.com/index.php/gii ou www.example.com/gii, ocorre este erro:
/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.
Não acho que o erro seja por causa do htaccess modificado e da configuração principal, mas de qualquer forma aqui está o arquivo de configuração 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>',
),
),
e .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]
Então você pode me ajudar, por favor?
Solução
Verifique se o módulo gii em seu arquivo de configuração está lá e não foi comentado.Se gii não estiver lá, você deve adicioná-lo ao array de módulos.
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>***choose a password***
),
),
Mais informações sobre gii aqui
Outras dicas
Para usar este caminho: index.php?r=gii/default/login
, você deve DESLIGAR o gerenciador de URLs em /protected/config/main.php
Verifique também urlManager
de rules
.Esse foi o problema para mim:
'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>',
// ...
),
),
),
Como FelikZ mencionado, isso pode ocorrer porque você criou um terceiro parâmetro em uma regra que usa \w+
em vez do padrão \d+
e, portanto, corresponderá a "gii" como controlador, "default" como ação e "login" como ID (ou subação, ou o que for mencionado).
Minhas regras eram assim:
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
A correção é adicionar o seguinte como primeira regra para fazer com que o gii atinja o lugar certo:
'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',
O que deve fazer todo o seu urlManager
config é algo parecido com o seguinte:
'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>',
),
),
Este problema ocorre devido às duas sessões do OP, por exemplo cookie PHPSESSID existem dois domínios domínio .site.ru e admin.site.ru duas sessões diferentes.Exclua os cookies PHPSESSID e faça login no gii