1

我已将 CakePHP 1.2 站点升级到 2.x。

该站点将一个内核用于多个应用程序。一切正常,除了贝壳。

我无法从控制台运行现有的 shell 之一。

当我尝试更改应用程序时,cake -app store出现以下错误:

#!/usr/bin/php -q
PHP Fatal error:  Cannot redeclare class ShellDispatcher in C:\www\domains\cakes\lib\Cake\Console\ShellDispatcher.php on line 24

Fatal error: Cannot redeclare class ShellDispatcher in C:\www\domains\cakes\lib\Cake\Console\ShellDispatcher.php on line 24

我正在执行以下命令:

> cd C:\www\domains\cakes\store

> Console\cake -app store

我在 Linux(debian)环境中得到相同的结果。配置有问题还是蛋糕中的错误?

4

2 回答 2

1

您是否删除了与旧 cake 1.3 核心相关的任何环境路径?并不是说那些会干扰您的 2.x 核心。反正你不需要它们。只有 PHP 之一。

我的猜测是,如果您没有找到任何外壳:您没有阅读应有的迁移指南:http: //book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html

外壳现在位于 /Console/Command/

使用可用的升级外壳之一自动实现或手动更改它。

PS:shell 的工作方式也有一些变化,不会使 1.3 的 shell 在 2.x 中开箱即用。您将不得不手动解决这些问题。

于 2012-10-11T13:55:02.300 回答
0

首先,感谢大家尝试解决这个问题。

我找到了原因。我为所有应用程序使用一个 database&core.php 文件,而 shell 不喜欢我包含这些文件的方式。更改此设置后,错误消失了。

于 2012-10-11T14:37:14.887 回答