Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github
O Symfony vem automaticamente com uma estrutura de diretórios padrão. Você pode facilmente substituir essa estrutura de diretório criando a seu própria. A estrutura de diretório padrão é:
app/
cache/
config/
logs/
...
src/
...
vendor/
...
web/
app.php
...
Você pode substituir o diretório cache, sobrescrevendo o método getCacheDir na classe AppKernel de sua aplicação:
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
// ...
public function getCacheDir()
{
return $this->rootDir.'/'.$this->environment.'/cache/';
}
}
$this->rootDir é o caminho absoluto para o diretório app e $this->environment é o ambiente atual (ou seja, dev). Neste caso você alterou a localização do diretório cache para app/{environment}/cache.
Caution
Você deve manter o diretório cache diferente para cada ambiente, caso contrário, algum comportamento inesperado pode acontecer. Cada ambiente gera seus próprios arquivos de configuração em cache, e assim, cada um precisa de seu próprio diretório para armazenar os arquivos de cache.
O processo para substituir o diretório logs é o mesmo do diretório cache, a única diferença é que você precisa sobrescrever o método getLogDir:
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
// ...
public function getLogDir()
{
return $this->rootDir.'/'.$this->environment.'/logs/';
}
}
Aqui você alterou o local do diretório para app/{environment}/logs.
Se você precisa renomear ou mover o seu diretório web, a única coisa que você precisa garantir é que o caminho para o diretório app ainda está correto em seus front controllers app.php e app_dev.php. Se você simplesmente renomear o diretório, então está tudo ok. Mas se você moveu de alguma forma, pode precisar modificar os caminhos dentro desses arquivos:
require_once __DIR__.'/../Symfony/app/bootstrap.php.cache';
require_once __DIR__.'/../Symfony/app/AppKernel.php';
Tip
Alguns hosts compartilhados tem um diretório raiz web public_html. Renomeando seu diretório web de web para public_html é uma maneira de fazer funcionar o seu projeto Symfony em seu servidor compartilhado. Outra forma é implantar sua aplicação em um diretório fora do raiz web, excluir seu diretório public_html e, então, substituí-lo por um link simbólico para o web em seu projeto.
Note
Se você utiliza o AsseticBundle precisará configurar o seguinte, para que ele possa usar o diretório web correto:
# app/config/config.yml
# ...
assetic:
# ...
read_from: "%kernel.root_dir%/../../public_html"
Agora você só precisa realizar o dump dos assets novamente e sua aplicação deve funcionar:
$ php app/console assetic:dump --env=prod --no-debug