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 rodado 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:
1 | define('ROOT', dirname(dirname(dirname(__FILE__)))); |
Vamos substituir por:
1 | 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:
1 | define('APP_DIR', basename(dirname(dirname(__FILE__)))); |
Por:
1 | 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 deles 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 trás 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 – Versão oficial
- Em português – No site oficial (traduzido por mim)