Cakephp安装和根目录

时间:2013-11-08 15:25:52

标签: cakephp

我正在使用cakephp installation进行生产,我遇到了问题。我使用hostmonster,所以这是一个使用LAMP堆栈的共享服务器。文档要求您更改根目录,如下所示:

DocumentRoot /cake_install/app/webroot

为此,我将以下语句添加到我的.htaccess文件中:

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /cake_install/app/webroot/$1 [L,R=301]

这导致以下错误:

Error: The view for AppController::webroot() was not found.

当我导航到www.example.com时,我被带到了正确的地址,但是有错误。如果我将index.php添加到地址或显然重写规则,这些错误就会消失。

那么,我在这里做错了什么?文档是否不正确,因为重写规则应该有额外的index.php,应该是没有它的地址工作,还是其他地方有问题?

更新:错误的第二部分说:

Error: Confirm you have created the file: /home2/cadwolfc/public_html/cake_install/app/View/App/webroot.ctp

我下载的蛋糕版本没有/ app / View文件夹。当我创建/App/webroot.ctp文件时,它消除了错误,但它覆盖了所有其他视图调用。

3 个答案:

答案 0 :(得分:0)

如果您的托管服务提供商尚未启用mod_rewrite。然后你需要删除.htaccess文件

  • /。htaccess的
  • /app/.htaccess
  • /app/webroot/.htaccess

如果我错了并且mod_rewrite没有任何问题,那么你应该编辑你的htaccess文件并执行类似

的操作
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
</IfModule>

答案 1 :(得分:0)

答案 2 :(得分:0)

在大多数共享主机上,您无法更改文档根目录。由于hostmonster has mod_rewrite没有在hostmonster上安装蛋糕的特殊步骤。有几种方法可以安装蛋糕 - 所有这些方法都在hostmonster上有效。

使用开发安装

设置应用程序的最简单方法是使用开发安装,即存在以下文件夹结构:

/home2/cadwolfc/public_html/app
/home2/cadwolfc/public_html/lib
/home2/cadwolfc/public_html/plugins
/home2/cadwolfc/public_html/vendors
/home2/cadwolfc/public_html/.htaccess
/home2/cadwolfc/public_html/index.php

除非遇到特定问题或需要满足特定要求,否则请勿修改any of the .htaccess files。使用以下命令或等效命令可以很容易地实现这一点:

cd /home2/cadwolfc
mv public_html old_public
git clone https://github.com/cakephp/cakephp.git public_html

或符号链接文档根目录

或者将您的文件放在服务器上的任何位置,只需对webroot进行符号链接:

/home2/cadwolfc/anywhere/app
/home2/cadwolfc/anywhere/lib
/home2/cadwolfc/anywhere/plugins
/home2/cadwolfc/anywhere/vendors
/home2/cadwolfc/anywhere/.htaccess
/home2/cadwolfc/anywhere/index.php
/home2/cadwolfc/public_html -> ../anywhere/app/webroot

通过这种方式,只有webroot是公开的,只有webroot .htaccess file是相关的。

或复制/移动webroot

或者将文件放在任何位置,但 webroot移动到文档根目录。然后更新the root constant以指向源文件的位置:

// app/webroot/index.php
/**
 * The full path to the directory which holds "app", WITHOUT a trailing DS.
 *
 */
if (!defined('ROOT')) {
    define('ROOT', '/home2/cadwolfc/overhere';
}

cake_install是什么意思?

Cake's documentation中,cake_install解释如下:

  

出于本示例的目的,我们假设您选择将CakePHP安装到/ cake_install。

这只是一个例子。 但是,这是“生产安装”部分中使用的示例,生产安装在文档根目录中没有全部或应用程序文件。使用文档根目录中的源文件设置“生产安装”不是生产安装,它是自定义开发安装(带来自定义问题)。

因此,逻辑选择是(两者都可用/安全使用mod_rewrite):

  • 使用标准开发安装
  • 使用实际生产安装

但不是两者的混合=)