安装CakePHP
第一节
介绍
你现在已经知道CakePHP的目的和结构了,如果你仅仅是想开始使用CakePHP,不关心这些文档,而跳过这部分,那么后面你将会遇到一些麻烦。
这一章将讲述服务器上必须安装的东西,配置服务器的不同方式,下载安装CakePHP,展现CakePHP的默认页面,和一些不在计划内的问题的解决方式。
第二节
安装需求
为了使用CakePHP,你必须先有一个包含能够运行CakePHP的库和程序的服务器。
服务器需求
下面是一些运行CakePHP的服务器需求:
Here are the requirements for setting up a server to run CakePHP:
一个HTTP服务器(例如:Apache) 并且使这些模块有效-- sessions, mod_rewrite (这个不是必须的但是最好有这个功能)。
PHP 4.3.2 或者更新的版本。CakePHP可以工作在PHP 4和5或者更新的版本。
一个数据库引擎(现在CakePHP支持MySQL, PostgreSQL 和一个wrapper for ADODB).
第三节
安装CakePHP
获得最新的稳定版本
通过这些方式你可以安全的获取一份CakePHP的拷贝:从CakeForge获取稳定版本,抓取每日构建,或者从SVN获取最新的代码。
去http://cakeforge.org/projects/cakephp/下载CakePHP项目的稳定版本。
去http://cakephp.org/downloads/index/nightly获得一个每日构建的版本。这些版本是稳定的,但是在发布成稳定版本之前常常会有一些bug需要修订。
选择你最喜欢的SVN客户端去https://svn.cakephp.org/repo/trunk/cake/获得一份你想要版本的CakePHP代码。
解压缩
现在你已经下载了最新的版本,把下载的压缩包放在你web服务器上的根目录下。现在你需要将CakePHP解压缩。解压有两种方式,一种是使用开发设置,这种方式可以方便的在一个域上放置多个CakePHP应用;另外一种是产品设置,这种方式可以在一个域上运行一个单独的CakePHP应用。
第四节
设置CakePHP
设置CakePHP的第一种方式使用开发环境的设置,但是这种方式不是很安全。另外一种更加安全的方式是使用产品环境设置。
注:当你的web服务器运行的时候/app/tmp 目录必须可写。
开发方式的设置
在开发方式时,我们可以把整个Cake的安装目录放到web服务器的根目录下(DocumentRoot)像下面这样:
/wwwroot
/cake
/app
/cake
/vendors
.htaccess
index.php
在这种设置下wwwroot文件夹是你web server的根目录,你的url可能像下面这样(如果你启用web server的mod_rewrite功能)
www.example.com/cake/controllerName/actionName/param1/param2
产品方式的设置
为了使用产品方式的设置,你需要有一些修改web server的根目录(DocumentRoot )的权限。这样做可以使整个web server的域运行一个CakePHP应用。
产品方式设置的文件布局如下:
../path_to_cake_install
/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
/webroot <-- 将web server的根目录(DocumentRoot )指向这里
.htaccess
index.php
/cake
/vendors
.htaccess
index.php
建议产品方式的web服务器配置httpd.conf
DocumentRoot /path_to_cake/app/webroot
在这种设置下wwwroot文件夹是你web server的根目录,你的url可能像下面这样(如果你启用web server的mod_rewrite功能)
http://www.example.com/controllerName/actionName/param1/param2
高级设置: 可选的安装选项
下面有一些案例,展示了将Cake的目录放在不同的地方。这些情况是当你的应用在一台共享的主机(译者注:如在租用的空间上放置你的web应用),或者当你想多个应用共享一个Cake库。
Cake应用有三个主要的部分:
CakePHP的核心库 - 在 /cake
应用的代码 (如:controllers, models, layouts和views) - 在 /app
应用的根目录访问文件 (如:images, javascript和css) - 在 /app/webroot
这些文件夹可以放在文件系统的任何位置,除了webroot,他是需要被web server访问的。你可以将webroot放到app的外面,当你移动webroot的时候同时也要告诉Cake你把他放到哪里了。
如果你这样做了,你需要修改/app/webroot/index.php 。有三个常量需要更改:
ROOT 必须设置成包含 app 文件夹的目录.
APP_DIR 别需设置成 app 目录(译者注:通常就是'app').
CAKE_CORE_INCLUDE_PATH 应该被设置成 Cake 库的目录(译者注:是指包含Cake的目录).
/app/webroot/index.php (去掉了部分注释)
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);
}
用一个例子说明可能会更容易理解。假设我想设置Cake工作在下面的方式:
我像让Cake被其他应用共享, 并且Cake在 /usr/lib/cake.
我Cake的webroot目录是 /var/www/mysite/.
我的应用的文件存储在 /home/me/mysite.
那么文件的布局可能会像这样:
/home
/me
/mysite <-- 相当于 /cake_install/app
/config
/controllers
/models
/plugins
/tmp
/vendors
/views
index.php
/var
/www
/mysite <-- 相当于 /cake_install/app/webroot
/css
/files
/img
/js
.htaccess
css.php
favicon.ico
index.php
/usr
/lib
/cake <-- 相当于 /cake_install/cake
/cake
/config
/docs
/libs
/scripts
app_controller.php
app_model.php
basics.php
bootstrap.php
dispatcher.php
/vendors
在这种设置下,我需要修改我webroot下的index.php文件(在该示例中文件应该是/var/www/mysite/index.php)如下:
这里推荐使用'DS'常量,而不是用斜线('/')分隔文件路径。这种方式避免了你可能误用错误的分隔符而导致的"文件丢失错误",并且这样会使你的代码更加轻便。
if (!defined('ROOT'))
{
define('ROOT', DS.'home'.DS.'me');
}
if (!defined('APP_DIR'))
{
define ('APP_DIR', 'mysite');
}
if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
第五节
配置 Apache 的 mod_rewrite
当CakePHP没有mod_rewrite支持时候,我们发现许多用户由于不能完美运行他们的系统而苦恼。下面是一些可能需要尝试并且使之正确运行的事情:
确认.htaccess 允许被重载:在httpd.conf,你的服务器上你必须确认为每一个Directory(虚拟目录)定义一个section。 确认当前Directory的AllowOverride 选项被设置成 All。
确定你修改的是系统的httpd.conf,而不是用户或者特定站点的httpd.conf。
由于一些原因你可能获得了一份没有.htaccess文件的CakePHP的拷贝。这种情况有可能是因为一些操作系统将以'.'开头的文件看作隐藏文件,从而没有拷贝他们。确认你的CakePHP拷贝是从官方网站或者SVN库中下载的。
确认你正确的加载了mod_rewrite模块。你需要在你的httpd.conf中查看一下LoadModule rewrite_module libexec/httpd/mod_rewrite.so 和 AddModule mod_rewrite.c 。
如果你安装CakePHP在一个用户目录 (如:http://example.com/~myusername/), 你需要在Cake安装的根目录中修改.htaccess文件,添加一行 "RewriteBase /~myusername/
".
如果因为某些原因你的URL后缀太长, 如令人讨厌的session ID (http://example.com/posts/?CAKEPHP=4kgj577sgabvnmhjgkdiuy1956if6ska),你可以在Cake安装的根目录中的.htaccess文件添加"php_flag session.trans_id off
" 。
第六节
确认他在工作
好的,让我们看看Cake是如何工作在你的设置下的。在浏览器中输入http://www.example.com 或者 http://www.example.com/cake,你会看到CakePHP的默认页面,页面上会显示一些数据库链接的信息。那么恭喜你,你已经准备好创建一个基于Cake的应用了。