CakePhp2定义的CAKE_CORE_包括_路径,现在DS和CORE_路径在ShellDispatcher中未定义

CakePhp2定义的CAKE_CORE_包括_路径,现在DS和CORE_路径在ShellDispatcher中未定义,shell,cakephp,console,cakephp-2.2,Shell,Cakephp,Console,Cakephp 2.2,为了在许多站点之间共享CakePhp2核心,我在webroot/index.php中编辑了CAKE_core_INCLUDE_路径,以指向CAKE目录。这很有效,我可以进入我的欢迎页面 然而,当我试图运行Cake控制台时,我遇到了ShellDispatcher.php没有定义DS和CORE_路径的问题,因为它们只有在没有定义Cake_CORE_INCLUDE_路径的情况下才被定义。一旦我用if语句定义了它们,该语句检查是否没有定义CAKE\u CORE\u INCLUDE\u路径,我就可以开始了

为了在许多站点之间共享CakePhp2核心,我在webroot/index.php中编辑了CAKE_core_INCLUDE_路径,以指向CAKE目录。这很有效,我可以进入我的欢迎页面

然而,当我试图运行Cake控制台时,我遇到了ShellDispatcher.php没有定义DS和CORE_路径的问题,因为它们只有在没有定义Cake_CORE_INCLUDE_路径的情况下才被定义。一旦我用if语句定义了它们,该语句检查是否没有定义CAKE\u CORE\u INCLUDE\u路径,我就可以开始了。但是,我不想“黑”这个文件,因为我想保持核心文件的干净。有更好更干净的选择吗


我还必须定义CAKE\u CORE\u INCLUDE\u路径,并使用它在Console/CAKE.php中设置$dispatcher,这当然是应用程序的一部分。

是的。首先,不要在
Webroot/index.php
中定义应用程序范围的变量。事实上,你根本不应该碰这个文件。您可以在中定义变量
Config/bootstrap.php

您之所以会出现错误,是因为在Shell中,您根本没有启动
Webroot/index.php
——实际上您正在运行,而CakePHP以不同的方式启动。 当然,它将通过
bootstrap.php
文件

您还应该使用这个文件来定义任何全局变量,但是有一个小瓶颈
在这里使用与web服务器相关的成员时-例如HTTP_主机和定义:
$myHost=$_服务器['HTTP_主机']。如果你启动一个外壳,蛋糕将尝试设置这个变量,它将失败并抛出一个错误。这是因为如前所述,当CakeShell被envoke时,PHP将在CLI模式下运行。当然,有一种方法可以检测到这一点-您可以在
bootstrap.php
中使用$\u SERVER['SCRIPT\u FILENAME']或$\u SERVER['SCRIPT\u NAME']来确定您是否在CLI中。:)

有。首先,不要在
Webroot/index.php
中定义应用程序范围的变量。事实上,你根本不应该碰这个文件。您可以在中定义变量
Config/bootstrap.php

您之所以会出现错误,是因为在Shell中,您根本没有启动
Webroot/index.php
——实际上您正在运行,而CakePHP以不同的方式启动。 当然,它将通过
bootstrap.php
文件

您还应该使用这个文件来定义任何全局变量,但是有一个小瓶颈
在这里使用与web服务器相关的成员时-例如HTTP_主机和定义:
$myHost=$_服务器['HTTP_主机']。如果你启动一个外壳,蛋糕将尝试设置这个变量,它将失败并抛出一个错误。这是因为如前所述,当CakeShell被envoke时,PHP将在CLI模式下运行。当然,有一种方法可以检测到这一点-您可以在
bootstrap.php
中使用$\u SERVER['SCRIPT\u FILENAME']或$\u SERVER['SCRIPT\u NAME']来确定您是否在CLI中。:)

我打算将标准控制器/视图添加到此应用程序,使其具有webapp部分。在这种情况下,编辑Webroot/inde.php不是可以接受的吗?我是否可以同时执行这两项操作并将Cake core与我的应用程序分开?否。
Cake\u core\u INCLUDE\u PATH
是一个配置值,这就是
Config
dir的作用
Webroot/index.php
是“处理每个请求的前端控制器”。使用
Config
下的文件更干净。您可以在
Config
中创建一个
shell.php
文件,并将其加载到
bootstrap.php
中,前提是在shell下,这样对您来说更干净。当core位于与默认设置不同的位置时,是否会自动加载Config/bootstrap.php?我问这个问题是因为作为一个测试,我在上面放了一个die语句,但我似乎没有达到它。
Config/bootstrap.php
app/
中,所以应该自动加载它。如前所述,您应该使用
bootstrap.php
core.php
。我更喜欢通过这两个文件将特定于应用程序的配置从核心配置中分离出来——特定于应用程序的内容进入
bootstrap.php
,核心配置进入
core.php
。每次在CLI模式下发出请求或启动all时,这两个应用程序都将运行。我打算将标准控制器/视图添加到此应用程序,使其具有webapp部分。在这种情况下,编辑Webroot/inde.php不是可以接受的吗?我是否可以同时执行这两项操作并将Cake core与我的应用程序分开?否。
Cake\u core\u INCLUDE\u PATH
是一个配置值,这就是
Config
dir的作用
Webroot/index.php
是“处理每个请求的前端控制器”。使用
Config
下的文件更干净。您可以在
Config
中创建一个
shell.php
文件,并将其加载到
bootstrap.php
中,前提是在shell下,这样对您来说更干净。当core位于与默认设置不同的位置时,是否会自动加载Config/bootstrap.php?我问这个问题是因为作为一个测试,我在上面放了一个die语句,但我似乎没有达到它。
Config/bootstrap.php
app/
中,所以应该自动加载它。如前所述,您应该使用
bootstrap.php
core.php
。我更喜欢通过这两个文件将特定于应用程序的配置从核心配置中分离出来——特定于应用程序的内容进入
bootstrap.php
,核心配置进入
core.php
。每次在CLI模式下发出请求或启动all时,两者都将运行。