3

Cake シェル スクリプトを実行しようとしていますが、出力は次のようになります。

-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]);
            }

        }
    }
}
4

1 に答える 1

0

最初のエラーに焦点を当てる

壊れたものをデバッグするときはいつでも、最初のエラーに焦点を当て、それによる副次的影響ではないことをお勧めします。最初のエラー メッセージは次の行です。

line 30:/root/site/app: はディレクトリです

これは、php.ini を呼び出す前に、cake bash スクリプトから取得されます。最新の 1.3 バージョンのその行は blankであるため、使用している Cake の特定のバージョンは明らかではありませんが、最新の 1.3 リリースではありません。

上記のエラーの結果、次のコマンドが呼び出されます。

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

Cake.php に渡されるパラメーターは、作業ディレクトリが空の文字列であることを指定します。これは異常であり、後で未定義のインデックス エラーを引き起こします。

アップグレードはすべての病気を治す

ほとんどの場合、この特定のエラーは、使用している同じリリース サイクルの最新バージョンから cake.php をコピーすることで解決できます。

また、CakePHP 自体を (使用中の同じメジャー バージョンから) 最新のリリースにアップグレードすることも検討してください。これにより、この特定の問題やその他の問題が修正される可能性があります。特に最近のセキュリティ リリースがあった場合に関連します。

于 2013-07-08T11:42:02.930 に答える