在我的本地设置中,我有很多不同的 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 文件,但只更改了一行,因为我没有像他那样将我的文件移出 App 文件夹。所以我唯一改变的是:
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
如果我将其粘贴到地址栏中,它会加载蛋糕文件夹,所以它是肯定是正确的文件夹结构只是它不喜欢在主 url 之外看蛋糕?
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;
}
最佳答案
您是对的:
define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3');
只需确保 Users 位于 root 中。换句话说,当您转到终端时,您可以通过键入以下内容进入该目录:cd/Users/cameron/Sites/cake-1.3
看起来您可能使用的是 MAC。如果是这样,您的链接是正确的。大多数时候,我发现您复制粘贴了 app 目录,但没有获得 .htaccess 文件。我会先检查那些。但这里是您应该验证的内容的完整列表:
- 确保主机指向
正确的目录
(
/Users/cameron/Sites/sample-site/
) - 验证 mod_rewrite 实际上是打开的。
- 确认您已经复制了
.htaccess
文件中的两个/Users/cameron/Sites/sample-site/
和/Users/cameron/Sites/sample-site/webroot
目录。 - 确认
/Users/cameron/Sites/cake-1.3/
目录有一个名为 包含核心的蛋糕。
一旦确认了这一切,你就万事大吉了!
编码愉快!
更新: 当 index.php 文件查找 cake core 时,它会在您指向的位置中查找另一个名为 cake 的目录。所以在你的情况下:
define('CAKE_CORE_INCLUDE_PATH', DS.'Users'.DS.'cameron'.DS.'Sites'.DS.'cake-1.3');
你必须在 /Users/cameron/Sites/cake-1.3
中有 cake 目录。您的目录结构将如下所示:
/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
关于php - CakePHP 多个应用程序的共享核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706245/