安装
CakePHP 的安装快速、容易。最低要求是一个 web 服务器和一份 CakePHP 的拷贝,仅此而已!尽管本手册主要关注于 Apache 服务器(因为它最为常用),但是也可以配置 CakePHP运行在不同的 web 服务器上,比如 lighttpd 或 Microsoft IIS。
要求
- HTTP 服务器。例如: Apache。mod_rewrite 模块为首选,但绝对不是必须的。
PHP 5.3.0 或更高版本(CakePHP 2.6和及其以下版本支持 PHP 5.2.8 或更高版本)。
从技术的角度来说,数据库不是必须的,但我们觉得大部分应用程序都会用到。CakePHP 支持多种数据库引擎:MySQL (4 或更高版本)
- PostgreSQL
- Microsoft SQL Server
- SQLite
注解
所有的内置驱动都需要 PDO。请确保已经安装了正确的 PDO 扩展。
许可协议
CakePHP 的许可是基于 MIT 许可协议的。这意味着在保持版权声明完整的前提下,你可以自由地修改、分发和重新发布其源码。你也可以自由地在商业或闭源应用程序中包含 CakePHP。
下载 CakePHP
有两个主要的方式可以获得 CakePHP 的最新拷贝。你可以从官网下载压缩文档(zip/tar.gz/tar.bz2),也可以从 git 库中获取代码。
要下载 CakePHP 最新的主版本,请访问官方网站https://cakephp.org 并点击 "Download" 链接。
所有 CakePHP 的当前发行版本都托管在 GitHub上。GitHub 同时托管了 CakePHP 自身和许多 CakePHP 的其它插件。CakePHP 的所有发行版本可从 GitHub tags 获得。
另外,你也可以获取未发布的最新代码,包含全部错误修正和最新的增强功能。这可以通过克隆 GitHub 库来获得:
- git clone -b 2.x git://github.com/cakephp/cakephp.git
访问权限
CakePHP 的很多不同操作都要使用 app/tmp
目录,比如模型描述、缓存的视图和会话(session)信息。
因此,要确保在 CakePHP 安装中 app/tmp
目录及其全部子目录可以被 web 服务器用户写入。
一个常见的问题是,app/tmp 目录及其子目录必须同时能够被 web 服务器和命令行用户写入。在 UNIX 系统中,如果 web 服务器用户不同于命令行用户,你可以在项目目录中只运行一次下面的命令,从而保证设置了正确的访问权限:
- HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
- setfacl -R -m u:${HTTPDUSER}:rwx app/tmp
- setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp
设置
设置 CakePHP 可以简单到把它直接放置在 web 服务器的文档根目录下,也可以像你希望的那样复杂和灵活。本节介绍三种主要的 CakePHP 安装方式:开发安装方式、生产安装方式和高级安装方式。
- 开发安装方式: 简单易行,应用程序的网址包含 CakePHP 的安装目录名,不是很安全。
- 生产安装方式: 要求能够配置 web 服务器文档根目录,简洁网址,非常安全。
- 高级安装方式: 通过一些配置,允许你把 CakePHP 的关键目录放在文件系统的不同位置,可以让多个 CakePHP 应用程序共享一个 CakePHP 核心库目录。
开发安装方式
开发安装方式是安装 CakePHP 最快的方法。本例将帮助你安装一个 CakePHP 应用程序并使它的网址为 http://www.example.com/cake_2_0/。假定文档根目录设置在/var/www/html
目录。
把 CakePHP 压缩包的内容解压到 /var/www/html
目录下。现在在文档根目录下已经有了一个以你下载的版本号命名的子文件夹(例如 cake_2.0.0)。将该文件夹更名为cake_2_0。开发安装方式的目录结构将如下所示:
- /var/www/html/
- cake_2_0/
- app/
- lib/
- plugins/
- vendors/
- .htaccess
- index.php
- README
如果 web 服务器配置正确,就可以通过 http://www.example.com/cake_2_0/ 访问你的CakePHP 应用程序。
多个应用程序使用同一份 CakePHP 拷贝
如果你正在开发多个应用程序,通常更合理的做法是让这些应用程序共享一份 CakePHP 核心。达到这个目的有几个办法。通常最容易的做法是使用 PHP 的 includepath
。首先,克隆(_clone) CakePHP 到一个目录。本示例中,我们使用 /home/mark/projects
目录:
- git clone git://github.com/cakephp/cakephp.git /home/mark/projects/cakephp
这会克隆 CakePHP 到 /home/mark/projects
目录下。如果不想使用 git,你可以下载一个 zip 包,以下的步骤是相同的。接下来,你必须找到并修改 php.ini
文件。在*nix 系统中,这通常位于 /etc/php.ini
,不过,使用 php -i
并寻找'Loaded Configuration File',你就可以找到(该文件)实际的位置。一旦找到正确的 ini文件,修改 include_path
设置使其包含 /home/mark/projects/cakephp/lib
。例如:
- include_path = .:/home/mark/projects/cakephp/lib:/usr/local/php/lib/php
然后重启 web 服务器,可以在 phpinfo()
中看到变化。
注解
如果是在 Windows 系统中,用 ; 代替 : 分隔多个包含路径。
一旦设置好 include_path
,应用程序应当能够自动找到 CakePHP。
生产安装方式
生产安装方式是更加灵活的配置 CakePHP 的方式。使用这种方法可以使整个域看起来象一个CakePHP 应用程序。本例将指导你在文件系统的任何位置安装 CakePHP,并可以通过http://www.example.com 访问。注意这种安装方式可能需要你有能够改变 Apache 服务器的DocumentRoot
的权限。
将 CakePHP 压缩包的内容解压到你选择的任意目录。假定你选择将 CakePHP 安装在/cake_install 目录中。生产安装方式的文件系统看起来会象下面这样:
- /cake_install/
- app/
- webroot/ (this directory is set as the ``DocumentRoot``
- directive)
- lib/
- plugins/
- vendors/
- .htaccess
- index.php
- README
使用 Apache 的开发人员应当把域的 DocumentRoot
指令设置为:
- DocumentRoot /cake_install/app/webroot
如果 web 服务器配置正确,就可以通过 http://www.example.com/ 访问你的 CakePHP 应用程序了。
高级安装方式和 URL 重写
启动
好了,让我们将 CakePHP 运行起来。取决于所采用的设置,你应当将浏览器指向http://example.com/ 或者 http://example.com/cake_2_0/。此时,你将会看到CakePHP 的默认主页,和当前数据库连接状态的消息。
恭喜!你已经可以 创建你的第一个 CakePHP 应用程序 了。
不能正常运行?如果你得到关于时区(timezone)的 PHP 错误,将app/Config/core.php
中下面这行代码注释掉:
- /**
- * 注释本行,并且改正服务器时区,来修复任何与日期及时间相关的错误。
- */
- date_default_timezone_set('UTC');