我正在尝试运行我的蛋糕shell脚本,但输出如下所示:
-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
我做错了什么?以下是此文件的内容:
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]);
}
}
}
}
答案 0 :(得分:0)
每当调试一些破碎的东西时,最好关注第一个错误而不是它的后果。第一条错误消息是这一行:
第30行:/ root / site / app:是一个目录
它来自蛋糕bash脚本,在调用php之前。在最近的1.3版本is blank中的那一行,所以你使用的蛋糕的特定版本并不明显,但它不是最新的1.3版本。
上述错误的后果是以下是命令:
exec php -q "/root/site/cake/console/"cake.php -working "" "audit"
^^
传递给cake.php的参数指定工作目录是空字符串,这是异常的,后来导致未定义的索引错误。
最有可能的是,可以通过从您正在使用的同一个发布周期的最新版本中复制cake.php来解决此特定错误。
还要考虑简单地将CakePHP本身升级到最新版本(来自使用中的相同主要版本),这可能会解决这个特定问题,以及其他问题 - 特别是如果有安全版本,那么最近一直存在。