Quando vamos instalar nossas aplicações em um servidor, temos o costume de pegar todo o conteúdo e jogar dentro de uma pasta ou direto na raiz do servidor de web. Digitamos o endereço e lá está nossa aplicação rodando no servidor! Uau! Porém, não é bem assim que devemos fazer. Em ambiente de desenvolvimento até podemos fazer, pois não temos nada tão seguro assim e é mais fácil para nós trabalharmos, mas para ambiente de produção recomenda-se fazer de outra maneira.
Colocar os diretórios app (ou o nome que você deu), cake e vendors dentro de um local não visível ao público (na maioria dos servidores de hospedagem, é a pasta fora de public_html ou www). Feito isso, mover o conteúdo da pasta app\webroot para o local público que você deseja que apareça. Por exemplo, se você quiser http://site/minhaapp/, coloque os arquivos da webroot (.htaccess, index.php, pastas img, js, css, ?) dentro de public_html/minhaapp/.
Após feito isso, abrir o arquivo index.php para configurar o local que a pasta da sua aplicação está e onde está o cake também. Vamos supor que coloquei minha pasta app e cake dentro da pasta ‘site’, sem visibilidade ao público (no mesmo nível de public_html) e que coloquei os arquivos de webroot na raiz do meu domínio (direto em public_html ou www), ficando da seguinte estrutura:
/
site/
app/
cake/
public_html/
No lugar de:
define('ROOT', dirname(dirname(dirname(__FILE__))));
Vamos substituir por:
define('ROOT', dirname(dirname(__FILE__)) . DS . 'site');
Com isso, ele informa que os diretórios de cake e app estão a um nível inferior e dentro de site.
Depois, substituir:
define('APP_DIR', basename(dirname(dirname(__FILE__))));
Por:
define('APP_DIR', 'app');
Assim informamos o nome da nossa pasta app. Ele irá procurar dentro de ROOT . APP_DIR.
Pronto! Alteramos o diretório dos nossos arquivos e não há perigo de eles serem vistos pelo público. Assim, se o Apache deixar de reconhecer os arquivos .php, o máximo que as pessoas verão é o index.php que não traz muita informação e ninguém rouba suas regras de negócio, login de banco de dados, etc.
Isto também está documentado no manual:
- Em inglês: http://book.cakephp.org/view/35/advanced-installation (versão oficial)
- Em português: http://book.cakephp.org/pt/view/35/instala-o-avan-ada – no site oficial (traduzido por mim)