Table of Contents : Manual

Instalação

Instalando o CakePHP pode ser feito simplesmente descompactando o conteúdo no seu servidor web ou de forma mais complexa e flexível, do jeito que você preferir. Esta seção vais falar de três maneiras de instalar o CakePHP: desenvolvimento, produção e avançada.

  • Desenvolvimento: fácil para começar, URL dos seus aplicativos incluem o diretório de instalação do CakePHP e é menos seguro;
  • Produção: Requer maior habilidade para configurar o servidor web, porém mais seguro e com URLs mais amigáveis;
  • Avançada: Com algumas configurações, permite você colocar os diretórios do CakePHP em diferentes locais do sistema, possibilitando compartilhar o núcleo do CakePHP entre diversas aplicações.

Desenvolvimento

Apenas coloque seus arquivos do CakePHP no diretório público do seu servidor web (normalmente htdocs, www, public_html). Por exemplo, assumindo que o diretório público do seu servidor web seja /var/www/html, os arquivos devem ficar desta maneira:

  • /var/www/html
    • /cake_1_2
      • /app
      • /cake
      • /docs
      • /index.php
      • /vendors

Para ver a sua aplicação CakePHP, entre no link http://www.exemplo.com/cake_1_2/.

Produção

Para utilizar-se do modelo de produção, você precisará ter privilégios de acessar o diretório público do servidor web. Escolhendo o modo de produção significa que todo o domínio age como um único pedido CakePHP.

A disposição dos arquivos no modo de produção fica da seguinte maneira:

  • /path_to_cake_install/
  • /app
    • /webroot (este diretório deve ser seu diretório público do servidor web)
  • /cake
  • /docs
  • /index.php
  • /vendors

Se sua aplicação está hospedada no Apache, a diretiva DocumentRoot para seu dominio deve ficar assim:

DocumentRoot /path_to_cake_install/app/webroot
  1. DocumentRoot /path_to_cake_install/app/webroot

Para ver sua aplicação CakePHP, entre no link http://www.exemplo.com.br.

Instalação avançada

Aqui estão algumas situações que você escolhe o lugar onde os diretórios do CakePHP vão ficar no seu sistema. Isto pode ser por causa de uma restrição do sistema ou para compartilhar as bibliotecas entre diferentes aplicações. Esta seção descreve como espalhar seus diretórios dos CakePHP no sistema.

Primeiro, note que há três partes principais da sua aplicação CakePHP:

  1. As bibliotecas do núcleo do CakePHP, em /cake;
  2. O código da sua aplicação, em /app;
  3. Os arquivos públicos da sua aplicação, normalmente em /app/webroot.

Cada um desses diretórios pode ser colocado em qualquer lugar do seu sistema, com exceção do webroot, que precisa estar acessivel pelo servidor web. Você pode mover a pasta webroot para fora do diretório da sua aplicação (app), desde que informe ao Cake onde você vai colocá-la.

Para configurar sua instalação do Cake, nós vamos ter que fazer algumas alterações no arquivo /app/webroot/index.php. Aqui existem três constantes que precisaremos editar: ROOT, APP_DIR e CAKE_CORE_INCLUDE_PATH.

  • ROOT deve ser configurada para informar o diretório onde sua aplicação se encontra, ou seja, onde está a pasta app;
  • APP_DIR deve ser configurada para informar qual a pasta app;
  • CAKE_CORE_INCLUDE_PATH deve ser configurada para informar o diretório onde estão as bibliotecas do CakePHP (a pasta cake).

Vamos fazer um exemplo para que você veja como funciona a instalação avançada na prática. Imagine que eu quero que a aplicação funcione como segue:

  • As bibliotecas do CakePHP deverão ser colocadas em /usr/lib/cake;
  • O diretório público da minha aplicação (webroot) deve ser em /var/www/meusite;
  • O diretório da aplicação deve ser /home/eu/meusite.

Com estas configurações, eu preciso editar o meu arquivo webroot/index.php (que no final deve estar em /var/www/meusite/index.php, neste exemplo) e ver o seguinte:

// /app/webroot/index.php (parcialmente, comentários removidos) 

if (!defined('ROOT')) {
    define('ROOT', DS.'home'.DS.'eu');
}

if (!defined('APP_DIR')) {
    define ('APP_DIR', 'meusite');
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
  1. // /app/webroot/index.php (parcialmente, comentários removidos)
  2. if (!defined('ROOT')) {
  3. define('ROOT', DS.'home'.DS.'eu');
  4. }
  5. if (!defined('APP_DIR')) {
  6. define ('APP_DIR', 'meusite');
  7. }
  8. if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  9. define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
  10. }

É recomendado que você use a constante DS no lugar das barras para entre os diretórios. Isso previne que não cause erro quando se use a aplicação em sistemas operacionais diferentes, tornando seu código mais portável.

Caminhos adicionais para classes

Em algumas ocasiões é interessante você compartilhar as classes do MVC entre as aplicações no mesmo sistema. Se você quer um mesmo controlador para mesma aplicação, você pode usar o arquivo bootstrap.php do CakePHP para adicionar estas classes adicionais.

No bootstrap.php, defina algumas variáveis com nomes especiais para fazer com que o CakePHP olhe nestes diretórios a procura da sua classe:

$viewPaths        = array();
$controllerPaths  = array();
$modelPaths       = array();
$helperPaths      = array();
$componentPaths   = array();
$behaviorPaths    = array();
  1. $viewPaths = array();
  2. $controllerPaths = array();
  3. $modelPaths = array();
  4. $helperPaths = array();
  5. $componentPaths = array();
  6. $behaviorPaths = array();

Cada um dessas variáveis especiais pode ser um conjunto na array com o diretório absoluto onde estão as classes que você desejar. Tenha certeza que cada diretório especificado inclua as barras com DS.

Apache e mod_rewrite

Enquanto o CakePHP é contruido para trabalhar com o mod_rewrite e vimos que muitos usuários apanham para conseguir fazer isto funcionar nos seus sistemas, nós lhe daremos algumas dicas que você pode tentar para tentar rodar corretamente:

  • Tenha certeza que o override está habilitado no .htaccess. Em seu httpd.conf, você deve olhar na seção que define seu Directory no servidor. Tenha certeza que AllowOverride está configurado como All para o diretório correto de DocumentRoot;
  • Tenha certeza que você está editando o httpd.conf do sistema antes da configuração do usuário ou do site em específico;
  • Tenha certeza que o arquivo .htaccess está na pasta do CakePHP. Em alguns sistemas operacionais ele pode ficar oculto na hora de mover devido a interpretarem o '.' como sinônimo de ocultamento. Tenha certeza que sua cópia do CakePHP é do site ou repositório oficial do CakePHP e que foi extraído corretamente;
  • Tenha certeza que você está carregando o mod_rewrite corretamente. Você pode ver algo como LoadModule rewrite_module libexec/httpd/mod_rewirte.so e AddModule mod_rewrite.c no seu httpd.conf;
  • Se você está instalando no diretório do usuário (http://exemplo.com.br/~username), você terá que modificar o arquivo .htaccess no diretório da base da instalação do CakePHP. Apenas adicione a linha "RewriteBase /~meuusername/".

Comece agora!

Tudo bem, vamos ver o CakePHP em ação. Dependendo de qual opção de instalação você utilizou, acesse no seu browser o link http://exemplo.com.br ou http://exemplo.com.br/cake_instalado/. Neste ponto, você verá a página padrão do CakePHP e a mensagem do estado da configuração do seu banco de dados.

Parabéns! Você já pode criar sua primeira aplicação CakePHP.