第三章 安装 CakePHP 1 , Requirements 你必须有一个服务器,具备程序和库来运行 CakePHP 1.1 服务器的要求 1.HTTP 服务端(比如 Apache ),下面的选项要打开: sessions, mod_rewrite( 虽然不是必须但是建议有 ) 2.PH P 4.3.2 或者更高版本, CakePHP 在
第三章 安装 CakePHP
1 , Requirements
你必须有一个服务器,具备程序和库来运行 CakePHP
1.1 服务器的要求
1.HTTP 服务端(比如 Apache ),下面的选项要打开: sessions, mod_rewrite( 虽然不是必须但是建议有 )
2.PH P 4.3.2 或者更高版本, CakePHP 在 PHP4 和 5 下都能很好工作
3. 数据库引擎(现在已经支持 MySQL , PostgreSQL and a wrapper for ADODB )
2. 安装 CakePHP
2.1 得到最新的稳定版本
www.cakephp.org 点击 Downloads>Release
2.2 解压缩
放置到根目录,解压缩,有两种安装方式,开发方式安装使得你可以容易的在一个域名下面察看许多 CakePHP 程序,产品安装方式使得一个域名下面只有一个程序
3. 建立 CakePHP
第一种方法在开发环境下比较合适,但是并不安全。第二种方法更安全可以安装在最终产品的环境下
3.1 开发方式安装
为了开发,我们可以将整个 Cake 的安装目录放到特殊的 DocumentRoot 下,如下:
/wwwroot/
/cake
/.htaccess
/app/
/cake/
/index.php
/tmp/
/vendors
这种安装 wwwroot 当作整个网站的目录,所以你的 URL 如下显示
www.example.com/cake/index.php
如果你使用了 mod_rewrite, 你的 URLs 会变成下面的这种形式
4. 配置 Apache 和 mod_rewrite
当 CakePHP 没有 mod_rewrite 支持时候,我们发现许多用户由于不能完美运行他们的系统而苦恼。下面是一些可能需要尝试并且使之正确运行的事情:
● 确定 .htaccess 的 override 是允许的:在你的 httpd.conf 中,你需要有一段代码,在你的服务器上每个目录。确定 AllowOverride 对当前的目录设置成为 All
● 确定你修改的是系统的 httpd.conf ,而不是用户或者特定站点的 httpd.conf
● 在某些情况下,你可能得到一份缺少 .htaccess 文件的 CakePHP, 这可能是因为某些系统把 . 开头的文件当作隐藏文件就不拷贝。确定你拷贝的文件来中包含 .htaccess
● 确定你正确上传 mod_rewrite 。你可以查看一下 httpd.conf 中类似于 LoadModule rewrite_module libexec/httpd/mod_rewrite.so 和 AddModulemod_rewrite.c
5. 确定 CakePHP 正确工作
现在,我们实际查看一下。根据你选择不同的安装方式,你应该将你的浏览器的 URL 指向 http://www.example.com 或者 http://www.example.com/cake. 这时,你会看到 CakePHP 的默认目录,以及一条数据库连接状态的消息。
恭喜!你现在已经可以创建你的第一个基于 Cake 的程序了。如果你现在什么都没有看到或者受到一条错误信息,可以到 http://wiki.cakephp.org 或者 #cakephp on irc.freenode.net 寻找更多的帮助。
第四章 配置
1. 数据库配置
app/config/database.php 文件是数据库配置文件。默认安装后并没有 database.php 文件,所以你需要拷贝 database.php.default 到 database.php. 之后,你可以看到如下:
例 4.1
var $default = array('driver' => 'mysql',
'connect' => 'mysql_pconnect',
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'project_name' );
根据你的数据库连接信息替换上面的配置
CakePHP 支持下面的数据库驱动
mysql
postgres
sqlite
pear-drivername (so you might enter pear-mysql, for example)
adodb-drivername
$default 连接中的 connect key 允许你设置是否需要持久连接数据库,请仔细阅读 database.php.default 文件中的注释,以配置你的数据库连接类型。
你的数据库中的表也应该遵循下面的命名规则:
● cake 使用的表名 (Table name) 应该有英文的复数形式组成,比如 users, authors, articles. 注意,对应的 model 是单数形式
● 所有的表 都必须有一个主键叫做 id
● 如果你需要关联 tables ,使用外键比如 article_id 。表的名字是单数,必须是小写 , 比如 id
● 另外,最好遵从下面的命名规则以便更方便的使用某些功能
Include a ‘created’ 列
Include a ‘modified’ 列
你也可能注意到了 database.php 文件中有一个 $test 的连接,填上这个配置(或者添加其他类似的配置文件),在你使用的时候将下面的代码
添加到你的一个 models 中
var $useDbConfig = 'test';
2. 全局配置
CakePHP 的全局配置可以在 /app/config/core.php 找到。尽管我们确实不喜欢配置文件,但是配置确实很难做。在这个文件中你可以修改一些,每一项设置都可以在 core.php 的注释中找到。
DEBUG: 设置这个变量不同的值可以帮助你在运行文件的时候 debug 你的程序。江这个值设成不同的非 0 值,可以使得 Cake 打印出 SQL 语句并且阻止程序下一步进行 ( 原文: Specifiying this setting to a non-zero value will force Cake to print out SQL statements and stop flash messages from forwarding.)
CAKE_SESSION_COOKIE: 在你的 Cake 应用中,这个变量可以设置成为保存用户 session 的 cookie 名字
CAKE_SECURITY: 这个变量不同的值达标不同的 sessions 检查等级。 Cake 创建新的 session, 删除旧的 session 都基于这个变量。下面是可能的值:
high: session 十分钟后失效
medium: session 二十分钟后失效
low: session 三十分钟后失效
CAKE_SESSION_SAVE: 设置如何保存 session 。下面是可能的值
cake: 保存在 tmp/ 目录下
php: 根据 php.ini 中的设置保存
database: 被保存到默认(现在还没有实现,以后继续完善)
3. 路径设置
‘ Routing ’ 是类似于 mod_rewrite 的 pared-down pure-PHP( 机制 ) ,可以帮助将 URL 影射到 controller/action/params. Cake 添加这个可以帮助我们更好的实现 URL 转化并使得我们可以脱离 mod_rewrite 的要求。然而使用 mod_rewrite ,使得我们的 address bar 显得更加整洁。
Routes 是映射 URLs 到特定的 controllers 和 actions 的独立规则。 Routes 被配置在 app/config/routes.php 文件中,设置形式如下:
例 4.2 Route Pattern
$Route->connect (
'URL' ,
array('controller' = >'controllername' ,
'action' = >'actionname' , 'firstparam')
) ;
?>
在这里
URL 是 Cake 的 URL 你想要映射的( URL is the Cake URL you wish to map )
controllername 是你想要调用的 controller 的名字
actionname 是你想要调用 controller 的 action 的名字
firstparam 是特定的 action 的第一个参数
下面的这个例子将 /blog 下面的所有 URL 连接到了 BlogController. 默认的 action 是 BlogController::index()
例 4.3 Route Example
一个 URL 比如 /blog/history/05/june 处理如下:
例 4.4 Route Handing in a Controller
class BlogController extends AppController
{
function history ($year , $month = null)
{
//..display appropriate content
}
}
?>
URL 中的 ’history’ 被匹配到 Blog route 中的 :action.( The 'history' from the URL was matched by :action from the Blog's route. ) URL 中被 * 匹配的元素被传递到活动的 controller 的处理方法,这里是 $year 和 $month 。比如这个 URL /blog/history/05, 仅仅传递一个参数 05 给 history()
接下来的例子是默认的 CakePHP route ,指向 PagesController::display(‘home’). 其中 home 是一个 view ,位于 /app/views/pages/home.thtml
例 4.5 Setting the Default Route
$Route->connect ('/*' , array('controller' = >'Pages' , 'action' = >'display' , 'home')) ;
?>
$Route->connect ('/blog/:action/*' , array('controller' = >'Blog' , 'action' = >'index')) ;
?>
http://www.example.com/cake/controller_name/action_name/param1/param2 pattern
产品方式安装
3.2
为了实现产品方式的安装,你必须用于修改服务器上网站根目录的权限,修改根目录,使得整个域像只有一个 CakePHP 程序
安装后的程序结构如下
.. / path_to_cake_install /
/ .htaccess
/ app /
/ config /
/ conftrollers
/ index .php
/ models
/ plugins
/ views
/ webroot -- This should be your new DocumentRoot
/ cake /
/ index .php
/ tmp /
/ vendors
例 3.1 建议的 httpd.conf
DocumentRoot / path_to_cake / app / webroot
在这种配置下, webroot 就当作了网站的根目录,你的 URL 就可能像下面这样
http: // www.example.com /
如果你使用了 mod_rewrite ,你的 URL 就会类似于下面的
http: // www.example.com / controller_name / action_name / param1 / param2 pattern
一些共享主机的用户可能没有权限通过修改 http.conf 来改变 DocumnentRoot 来指向他们的产品安装。在这种情况下,用户可以安装下面的方式,修改 CakePHP 的结构。 Cake 安装在 /path_to_cake_install ,文件目录(不可以修改)指向 /public_html
/ path_to_cake_install
/ app
/ cake
/ index .php
/ models
/ plugins
/ views
/ webroot
/ public_html ( = contents of / app / webroot)
/ .htaccess
/ css
/ css.php
/ favicon.ico
/ files
/ img
/ index .php
/ js
实际上,你将 Cake 的 /app/webroot 文件夹的内容拷贝到你已经存在的 DocumentRoot 。为了告诉 Cake 你的 webroot 文件在哪里,将下面几行田间到你 DocumentRoot 文件夹下面的 index.php 中(针对上面的例子就是 /public_html/index.php )
define('ROOT', BASE_DIR.'/path_to_cake_install');
define ('APP_DIR', 'app');
define ('WEBROOT_DIR', '/public_html');