Yii 1.14 обратите внимание на Неопределенное смещение: 0 в CUrlManager.php


Здравствуйте, я сталкиваюсь с этим уведомлением в своем веб-приложении, которое работает на Yii 1.14 в поддомене в godaddy, и это приводит к сбою моего приложения.

Неопределенное смещение: 0

/home/uname/public_html/some_dir/yii/framework/web/CUrlManager.php (656)

 public function __construct($route,$pattern)
 {
     if(is_array($route))
     {
         foreach(array('urlSuffix', 'caseSensitive', 'defaultParams', 'matchValue', 'verb', 'parsingOnly') as $name)
         {
            if(isset($route[$name]))
                 $this->$name=$route[$name];
        }
         if(isset($route['pattern']))
             $pattern=$route['pattern'];
         $route=$route[0];
     }
     $this->route=trim($route,'/');

     $tr2['/']=$tr['/']='\\/';

     if(strpos($route,'<')!==false && preg_match_all('/<(\w+)>/',$route,$matches2))
     {
         foreach($matches2[1] as $name)
             $this->references[$name]="<$name>";
     }


$this->hasHostInfo=!strncasecmp($pattern,'http://',7) || !strncasecmp($pattern,'https://',8);
Author: MH2K9, 2014-09-15

2 answers

Эта ошибка возникает, если ваша конфигурация повреждена. Проверьте свою конфигурацию в:

['components']['urlManager']['rules']

Если вы установили пустой массив в этой позиции, вы получите сообщение об ошибке.

return array(
    'components'    => array(
        'urlManager'   => array(
                'rules' => array(
                    '<controller:\w+>/<id:\d+>'
                        => '<controller>/view', // fine

                    array(), // Won't work!!
                    '<controller:\w+>/<id:\d+>'
                        => array(), // Won't work!!
                ),
        )
    )
)

Пожалуйста, ознакомьтесь с документацией и обновите ее до последней версии 1.1.15, которая является важным обновлением для системы безопасности.

 2
Author: Fabian H., 2014-09-15 20:55:34

У меня была та же ошибка. В моем случае это был дубликат кода ('URLFORMAT'=>'путь'), например:

'urlManager'=>array(
        'showScriptName'=>false,
        'urlFormat'=>'path',
        'rules'=>array(
        'class'=>'application.components.UrlManager',
        'urlFormat'=>'path', //duplicate
        'showScriptName'=>false,
        'rules'=>array(
            ...
        ),
        ),
    ),

В моей конфигурации "urlManager". Я удалил один из них ('urlformat'=>'путь'), и ошибка исчезла

 0
Author: user3410311, 2015-03-23 07:20:57