高级安装

通过 PEAR 安装程序安装 CakePHP

CakePHP 发行 PEAR 的安装包,故可以通过 PEAR 安装程序安装。用 PEAR 安装,可以简化在多个应用程序间共享 CakePHP 类库的工作。要通过 PEAR 安装 CakePHP,需要执行下面的命令:

  1. pear channel-discover pear.cakephp.org
  2. pear install cakephp/CakePHP

注解

在一些操作系统中用 PEAR 命令安装类库需要 sudo

使用 PEAR 安装 CakePHP 之后,如果 PEAR 配置正确,可以使用 cake 命令来创建新的应用程序。由于 CakePHP 已经被包含在 PHP 的 include_path 中,就不需要再做任何其它改动了。

通过 Composer 安装 CakePHP

在开始之前你应当确保你的 PHP 版本是更新了的:

  1. php -v

你最低也应当安装了 PHP 5.3.0 (CLI) 或更高版本。你的 web 服务器的 PHP 版本必须也是5.3.0 或更高版本,并且应当最好和命令行(CLI)的 PHP 版本相同。

安装 Composer

Composer 是一个适用于 PHP 5.3+ 的依赖管理工具,解决了 PEAR 安装程序的很多问题,并且简化了对类库的多个版本的管理。Packagist 是Composer 安装包的主要仓库。由于 CakePHP 也发布版本到 Packagist,故而可以使用Composer 安装 CakePHP。

  • 在 Linux 和 Mac OS X 上安装 Composer

    • 按照 official Composer documentation描述的那样运行安装脚本,并遵照指示安装 Composer。

    • 运行下面的命令,把 composer.phar 文件移动到 path 环境变量中的一个目录中:

  1. mv composer.phar /usr/local/bin/composer
  • 在 Windows 上安装 Composer

对于 Windows 系统,你可以从 这里 下载 Composer 的Windows 安装程序。 Composer 的 Windows 安装程序更多的指示可以参阅 这里 的 README。

创建 CakePHP 项目

在安装 CakePHP 之前需要建立 composer.json 文件。CakePHP 应用程序的composer.json 可以象下面这样:

  1. {
  2. "name": "example-app",
  3. "require": {
  4. "cakephp/cakephp": "2.10.*"
  5. },
  6. "config": {
  7. "vendor-dir": "Vendor/"
  8. }
  9. }

把这段 JSON 保存在项目的 APP 目录中的 composer.json 文件中。接下来把composer.phar 文件下载到项目中。在 composer.json 所在的目录下运行如下命令:

  1. $ php composer.phar install

一旦 Composer 运行结束,目录结构应当如下所示:

  1. example-app/
  2. composer.phar
  3. composer.json
  4. Vendor/
  5. bin/
  6. autoload.php
  7. composer/
  8. cakephp/

现在可以生成应用程序骨架的其余部分:

  1. $ Vendor/bin/cake bake project <path to project>

缺省情况下,bakeCAKE_CORE_INCLUDE_PATH 硬编码了。为了使应用程序更具移植性,应当修改 webroot/index.php ,将 CAKE_CORE_INCLUDE_PATH改为相对路径:

  1. define(
  2. 'CAKE_CORE_INCLUDE_PATH',
  3. ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'
  4. );

注解

如果你计划为应用程序创建单元测试,你也需要对 webroot/test.php 做上面的修改。

如果使用 Composer 安装其他任何类库,则需要设置自动加载(autoloader)并绕过(work around)Composer 自动加载的一个问题。在 Config/bootstrap.php 文件中添加如下代码:

  1. // 加载 Composer 的自动加载。
  2. require APP . 'Vendor/autoload.php';
  3.  
  4. // 删除并重新优先添加 CakePHP 的自动加载,因为 Composer 认为这是最重要的。
  5. // 参看:http://goo.gl/kKVJO7
  6. spl_autoload_unregister(array('App', 'load'));
  7. spl_autoload_register(array('App', 'load'), true, true);

现在这个用 Composer 安装的 CakePHP 应用程序应该可以运行了。注意确保 composer.json和 composer.lock 文件与其它源代码一起(添加到源码控制中)。

在多个应用程序间共享 CakePHP 类库

在某些情况下,你会希望把 CakePHP 的目录放到文件系统的不同地方。这可能是因为共享主机的限制,或者你只是想让一些应用程序共享相同的 CakePHP 类库。本节将说明怎样把CakePHP 的目录分散到文件系统的的不同地方。

首先,明确 Cake 的应用程序有三个主要部分:

  • CakePHP 核心类库,位于 /lib/Cake 目录。
  • 应用程序的代码,位于 /app 目录。
  • 应用程序的 webroot,通常位于 /app/webroot 目录。
    这里的每个目录,都可以放到文件系统的任何位置,除了 webroot,它必须位于 web 服务器能够访问到的地方。甚至可以将 webroot 目录移动到 app 目录外面,只要你告诉 CakePHP你把它放在了哪里。

配置 CakePHP 的安装时,需要对下面的文件做一些修改。

  • /app/webroot/index.php
  • /app/webroot/test.php (如果你使用Testing 的功能。)
    有三个常量需要修改: ROOTAPP_DIRCAKE_CORE_INCLUDE_PATH

  • ROOT 应当设置为包含你的 app 文件夹的目录路径。

  • APP_DIR 应当设置为 app 目录的目录名称(译注:即不包含前面的路径)。
  • CAKE_CORE_INCLUDE_PATH 应当设置为 CakePHP 类库目录的路径。
    让我们通过下面的例子,让你明白高级安装实际上是怎样的。设想我要象下面这样设置CakePHP:

  • CakePHP 的核心类库位于 /usr/lib/cake。

  • 应用程序的 webroot 目录是 /var/www/mysite/。
  • 应用程序的 app 目录是 /home/me/myapp。
    鉴于这种类型的设置,我需要编辑 webroot/index.php 文件(在本例中为/var/www/mysite/index.php),(让它)像下面这样:
  1. // /app/webroot/index.php (部分代码,删除了注释)
  2.  
  3. if (!defined('ROOT')) {
  4. define('ROOT', DS . 'home' . DS . 'me');
  5. }
  6.  
  7. if (!defined('APP_DIR')) {
  8. define ('APP_DIR', 'myapp');
  9. }
  10.  
  11. if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  12. define('CAKE_CORE_INCLUDE_PATH', DS . 'usr' . DS . 'lib');
  13. }

推荐使用 DS 常量而不是斜杠(译注:即 /\)来分隔文件路径,这样可以避免因为使用错误的分隔符而导致的文件无法找到的错误,并使代码更具移植性。

Apache 和 mod_rewrite (以及 .htaccess)

本节内容被移到 网址重写