http://www.1x3x.net/cakephp/index.html 中文手册 version1.0 by Ken & Luxel
让我们来看一下完整的目录结构:
/app
/config - 配置文件目录,包括Database, ACL等
/controllers - Controllers文件
/components - Components文件
/index.php - 允许你将app目录部署为DocumentRoot (译注:参见Apache相关配置)
/models - Model文件
/plugins - Plugins文件
/tmp - Cache和日志存放处
/vendors - 你的应用中使用到的第三方类库
/views - 视图文件
/elements - 视图元素文件
/errors - 自定义错误页面
/helpers - Helpers文件
/layouts - 页面布局文件
/pages - 静态页面文件
/webroot - web根目录
/css
/files
/img
/js
/cake - 核心类库,请不要随意修改任何文件,除非你确信你有这个能力
index.php
/vendors - 服务器端的第三方类库
-------------------- 1 开发环境设置
对于开发环境来说,我们可以把整个Cake目录放置在DocumentRoot下:
/wwwroot
/cake
/app
/cake
/vendors
.htaccess
index.php
这样的设置方案下,你的URL会如下这般(假设你使用了mod_rewrite):
www.example.com/cake/controllerName/actionName/param1/param2
-------------------- 2 生产环境设置
使用生产环境配置,你必须拥有修改Web Server DocumentRoot的权限。那样的话,整个域就如同一个CakePHP应用一般。
生产环境配置使用如下目录结构
../path_to_cake_install
/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
/webroot <-- 这将是你新的
DocumentRoot
.htaccess
index.php
/cake
/vendors
.htaccess
index.php
建议修改Apache的配置文件如下:
DocumentRoot /path_to_cake/app/webroot
这样的配置下,你的URL将会如下这般:
http://www.example.com/controllerName/actionName/param1/param2
--------------------3 高级设置
在有些情况下,你希望能够将Cake应用的目录放在磁盘不同目录下。这可能是因为虚拟主机的限制,或者你希望多个app应用能够共享同一个Cake Lib。
对于一个Cake应用,有3个主要组成部分:
1.
CakePHP核心Lib - /cake目录下
2.
你的应用的代码(例如:controllers, models, layouts and views) - /app目录下
3.
你的应用web目录下的文件 (例如 图片 js脚本以及css样式文件等) - /app/webroot 目录下
这3个目录都可以放置在磁盘的任意位置,但是webroot目录必须是web server可以访问的。你甚至可以把webroot目录移出app目录,只要你告诉Cake你把它们放到哪里去了。
你需要修改/app/webroot/index.php来完成配置(和Cake一起分发)。你需要修改3个常量:ROOT, APP_DIR, and CAKE_CORE_INCLUDE_PATH。
1.
ROOT 为包含app目录的根路径
2.
APP_DIR app目录路径
3.
CAKE_CORE_INCLUDE_PATH Cake核心Lib目录
你的应用web目录下的文件 (例如 图片 js脚本以及css样式文件等) - /app/webroot 目录下
这是范例:
/app/webroot/index.php (partial, comments removed)
if (!defined('ROOT'))
{
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
if (!defined('APP_DIR'))
{
define ('APP_DIR', basename(dirname(dirname(__FILE__))));
}
if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
define('CAKE_CORE_INCLUDE_PATH', ROOT);
}
下面通过一个具体的例子来解释我的配置
1.我希望Cake Lib能够被共享,所以放在user/lib/cake下 (译注:作者都是linux配置,windows环境下随便放放吧)
2.Cake webroot 目录为/var/www/mysite/。
3.程序文件目录为/home/me/mysite。
下面为具体的目录结构,不再赘述
/home /me /mysite <-- Used to be /cake_install/app /config /controllers /models /plugins /tmp /vendors /views index.php /var /www /mysite <-- Used to be /cake_install/app/webroot /css /files /img /js .htaccess css.php favicon.ico index.php /usr /lib /cake <-- Used to be /cake_install/cake /cake /config /docs /libs /scripts app_controller.php app_model.php basics.php bootstrap.php dispatcher.php /vendors
我按照上面的目录结构修改/var/www/mysite/index.php如下:
我建议使用'DS'常量代替路径中的斜杠。这样会保证你不会写错导致找不到文件。(考虑跨平台)
1. if (!defined('ROOT'))
2. {
3. define('ROOT', DS.'home'.DS.'me');
4. }
5.
6. if (!defined('APP_DIR'))
7. {
8. define ('APP_DIR', 'mysite');
9. }
10.
11. if (!defined('CAKE_CORE_INCLUDE_PATH'))
12. {
13. define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
14. }