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:
/<br /> site/<br /> app/<br /> cake/<br /> public_html/<br /><br />No lugar de:<br /><br />define('ROOT', dirname(dirname(dirname(__FILE__))));<br /><br />Vamos substituir por:<br /><br />define('ROOT', dirname(dirname(__FILE__)) . DS . 'site');<br /><br /><br />Com isso, ele informa que os diretórios de cake e app estão a um nível inferior e dentro de site.<br /><br />Depois, substituir:<br /><br />define('APP_DIR', basename(dirname(dirname(__FILE__))));<br /><br />Por:<br /><br />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)







