Ver índice de contenidos del libro

23.4. Modificando la estructura de directorios

Symfony utiliza una estructura de directorios predefinida que permite organizar y estandarizar mejor el código de las aplicaciones. No obstante, en ocasiones no puedes utilizar esa estructura de directorios porque tienes que seguir las normas de trabajo impuestas por otras personas.

La clase config/ProjectConfiguration.class.php permite configurar el nombre de cada directorio.

23.4.1. El directorio web raíz

En algunos servicios de hosting no puedes modificar el nombre del directorio web raíz. Imagina que en tu servidor compartido ese directorio se llama public_html/ en vez de web/:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setWebDir($this->getRootDir().'/public_html');
  }
}

El método setWebDir() utiliza como argumento la ruta absoluta hasta el directorio web raíz. Si modificas también la localización de este directorio, no olvides modificar todos los controladores frontales para comprobar que las rutas a la clase config/ProjectConfiguration.class.php todavía son válidas:

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

23.4.2. Los directorios de cache y de log

El framework Symfony sólo escribe en dos directorios: cache/ y log/. Por motivos de seguridad, algunos servicios de hosting no establecen permisos de escritura en el directorio principal. Si este es tu caso, puedes mover estos directorios a cualquier otro directorio del servidor:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setCacheDir('/tmp/symfony_cache');
    $this->setLogDir('/tmp/symfony_logs');
  }
}

Como sucede con el método setWebDir(), a los métodos setCacheDir() y setLogDir() se les pasa como argumento la ruta absoluta hasta los nuevos directorios cache/ y log/ respectivamente.