CakePHP cakeshell错误 "A Notice: Uninitialized string offset: 0 in" (注:该内容为提问标题,无需回答)

3

我正在尝试运行蛋糕壳脚本,但输出结果看起来像这样:

-bash-3.2$ ../cake/console/cake audit
../cake/console/cake: line 30:/root/site/app: is a directory
Array
(
    [0] => /root/site/cake/console/cake.php
    [1] => -working
    [2] => 
    [3] => audit
)

Notice: Uninitialized string offset: 0 in /root/site/cake/console/cake.php on line 550

我做错了什么?以下是此文件的内容:

cake.php

function __parseParams($params) {
    $count = count($params);
    for ($i = 0; $i < $count; $i++) {
        if (isset($params[$i])) {
            if ($params[$i]{0} === '-') {
                $key = substr($params[$i], 1);
                $this->params[$key] = true;
                unset($params[$i]);
                if (isset($params[++$i])) {
                    if ($params[$i]{0} !== '-') {//This is line 550
                        $this->params[$key] = str_replace('"', '', $params[$i]);
                        unset($params[$i]);
                    } else {
                        $i--;
                        $this->__parseParams($params);
                    }
                }
            } else {
                $this->args[] = $params[$i];
                unset($params[$i]);
            }

        }
    }
}

$params 的内容是什么?我怀疑你想使用 $params[$i]{0} - Michael Berkowski
嘿,谢谢回复。我很快会在这里告诉你。 - numerical25
1个回答

0

专注于第一个错误

每当调试某些出现问题的东西时,专注于第一个错误而不是由此产生的后果是一个好主意。第一个错误消息是这一行:

第30行:/root/site/app:是一个目录

它来自蛋糕bash脚本,在调用php之前。在最新的1.3版本中,该行为空白, 因此不清楚您使用的具体版本是什么,但它不是最新的1.3版本。

以上错误的后果是调用以下命令:

exec php -q "/root/site/cake/console/"cake.php -working "" "audit"
                                                        ^^

传递给cake.php的参数指定工作目录为空字符串,这是异常的,后来导致未定义索引错误。

升级可以解决所有问题

最有可能,这个特定的错误可以通过从您正在使用的相同发布周期的最新版本中复制cake.php来解决。

还要考虑将CakePHP本身简单地升级到最新版本(使用相同的主要版本),这将很可能解决这个特定的问题,以及其他问题 - 特别是如果有安全更新,最近确实有。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接