【问题标题】:Yii 1.14 notice Undefined offset: 0 in CUrlManager.phpYii 1.14 通知 Undefined offset: 0 in CUrlManager.php
【发布时间】:2014-11-09 05:03:49
【问题描述】:

您好,我在我的 web 应用程序中遇到了这个通知,该应用程序在 godaddy 的子域上启动了 Yii 1.14,它使我的应用程序崩溃。

未定义的偏移量: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);

【问题讨论】:

  • 显然$route[0] 没有设置
  • 乔南:是的,但问题是这是来自 Yii 1.14 的核心代码,它在我的本地主机上运行没有问题
  • @Clément Malet 我不这么认为。
  • @HamzehAlDarawsheh 那么您必须提供有关您的问题的更多详细信息。我们所能做的就是没有设置$route[0]。你希望它是什么?

标签: php yii crash notice


【解决方案1】:

如果您的配置损坏,则会出现此错误。 检查您的配置:

['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!!
                ),
        )
    )
)

请检查documentation 并更新到最新版本 1.1.15,这是一个重要的安全更新。

【讨论】:

  • 在几分钟前我解决了这个问题,正如你提到的,它是空规则-我不知道它是如何被删除的,看起来我的主机中有一个幽灵-,非常感谢先生,不幸的是我不能投票给你,因为我的名声还很低,问候。
【解决方案2】:

我有同样的错误。在我的情况下,它是这样的代码('urlFormat'=>'path',) 的重复:

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

在我的“urlManager”配置中。 我删除了其中一个('urlFormat'=>'path',)并且错误消失了

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    相关资源
    最近更新 更多