CakePHP共享多个应用程序的核心

时间:2011-04-18 16:58:08

标签: php cakephp

在我的本地设置中,我有很多不同的CakePHP网站。我正在使用Mac,因此文件夹结构类似于~/Users/cameron/Sites/sample-website,然后在每个网站中我将拥有典型的Cake文件夹和App文件夹。

我想做的只是一个核心蛋糕文件夹然后让所有网站从那个蛋糕核心拉出来,所以我没有多次相同的东西。我一直在网上阅读一些教程:http://rickguyer.com/cakephp-one-core-many-apps/

所以我在这里有我的蛋糕文件夹:~/Users/cameron/Sites/cake-1.3/然后我的网站:~/Users/cameron/Sites/sample-site/在这个文件夹中我有通常的app文件夹和htaccess告诉它在哪里可以找到webroot等。

现在我已经编辑了webroot中的index.php文件,就像教程一样,但是只更改了一行,因为我没有像我那样移动我的文件OUTSIDE。所以唯一像我改变的那样如下:

if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
    define('CAKE_CORE_INCLUDE_PATH', '..'.DS.'..'.DS.'cake-1.3');
}

据我所知,正确地查找了两个目录并找到了一个名为cake-1.3的文件夹,但它只是给出了错误500?

任何想法是什么问题?感谢

编辑:

即使这样做也行不通??? 如果我回应:echo CAKE_CORE_INCLUDE_PATH;给出/Users/cameron/Sites/cake-1.3,如果我将其粘贴到地址栏中,它会加载蛋糕文件夹,所以它肯定是正确的文件夹结构只是它不喜欢看看外面的蛋糕主要网址?

if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
    define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3'); echo CAKE_CORE_INCLUDE_PATH;
}

5 个答案:

答案 0 :(得分:3)

你的钱是正确的:

define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3');

确保用户位于root中。换句话说,当您转到终端时,您可以通过键入以下内容来访问此目录:cd /Users/cameron/Sites/cake-1.3

看起来你可能在MAC上。如果是这样,您的链接是正确的。大多数时候,我发现你已经完成了app目录的复制粘贴,但它没有得到.htaccess文件。我会先检查一下。但是这里有一份你应该验证的全面清单:

  1. 确保主机指向 正确的目录 (/Users/cameron/Sites/sample-site/
  2. 确认mod_rewrite实际上已开启。
  3. 确认您已复制.htaccess 两个文件都在 /Users/cameron/Sites/sample-site//Users/cameron/Sites/sample-site/webroot 目录。
  4. 确认 /Users/cameron/Sites/cake-1.3/ directory有一个名为的目录 包含核心的蛋糕。
  5. 一旦所有这一切得到确认,你就会像黄金一样好!

    快乐的编码!

    <强>更新 当index.php文件查找cake核心时,它将在您指向的位置内寻找另一个名为cake的目录。所以在你的情况下:

    define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3');
    

    您必须在/Users/cameron/Sites/cake-1.3内有蛋糕目录。您的目录结构如下所示:

    /Users/cameron/Sites/cake-1.3/cake
    /Users/cameron/Sites/cake-1.3/cake/libs
    /Users/cameron/Sites/cake-1.3/cake/config
    /Users/cameron/Sites/cake-1.3/cake/console
    etc.
    

    CakePHP 3.0 + 在CakePHP 3.0+中,此配置从webroot / index.php移出到App / Config / paths.php

答案 1 :(得分:1)

如果您有权访问php.ini,可以在那里添加Cake Core的路径。这样做意味着您根本不必更改webroot / index.php。 php.ini中的示例:

include_path = ".:/usr/local/lib/php:/home/something/phpinc/cakephp2/lib"

根据CakePHP 2.x docs,这是共享Cake核心的推荐方法(假设您可以访问php.ini)。

答案 2 :(得分:0)

您只能拥有一个蛋糕核心,但您必须拥有一个应用程序文件夹(包含MVC)。

答案 3 :(得分:0)

这是对CakePHP文件夹结构的误解吗?

来自文档(CakePHP folder structure):

  • app文件夹将是你工作的地方你的魔法:它就是你应用程序文件的放置位置。
  • 蛋糕文件夹是我们工作的地方我们的魔法。个人承诺不编辑此文件夹中的文件。如果您修改了核心,我们无法帮助您。

因此cake文件夹不应在所有用途之间更改,因此您有1份副本。您可以随时在app文件夹中进行更改,即扩展,从而更改核心的某些功能。

答案 4 :(得分:0)

无需编辑index.php。

只需将别名(或UNIX中的链接)放入每个站点文件夹中的cake文件夹即可。完美的工作。插件和供应商文件夹也是如此。