A veces nos interesa que ciertos parámetros de nuestra configuración estén definidos fuera del código de esta. Por ejemplo, los parámetros de conexión de la base de datos. Para estos casos podemos usar variables de entorno. En Apache lo haríamos así:
DocumentRoot "c:/xampp/htdocs/dev/public_html/web"
ServerName symfony.localhost
SetEnv SYMFONY__DATABASE__USER "usuario"
SetEnv SYMFONY__DATABASE__PASSWORD "password"
SetEnv SYMFONY__DATABASE__NAME "name"
En el caso de que usemos Nginx con PHP-CGI sería algo así:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index app_dev.php;
include fastcgi_params;
fastcgi_param SYMFONY__DATABASE__USER usuario;
fastcgi_param SYMFONY__DATABASE__NAME name;
fastcgi_param SYMFONY__DATABASE__PASSWORD password;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Y luego los recuperamos en el config.yml:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database.name%
user: %database.user%
password: %database.password%
Ojo al uso de . y _ . En este caso database_driver, database_host y database_port siguen definidos en el fichero parameteres.ini.
Hay que tener en cuenta que si lanzamos algún script desde consola, tipo php app/console, no tendrá acceso a las variables de entorno, generando un error:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
You have requested a non-existent parameter "database.user".
Para que funcione correctamente, hay que definir las variables de entorno, usando SET en Windows, o EXPORT en Linux:
SET SYMFONY__DATABASE__USER=usuarioSET SYMFONY__DATABASE__PASSWORD=password
SET SYMFONY__DATABASE__NAME=name
En Windows también podemos hacerlo en la ventana de variables de entorno, Panel de control -> Sistema -> Configuración avanzada del sistema -> Variables de entorno:
Más info en: http://symfony.com/doc/current/cookbook/configuration/external_parameters.html
No hay comentarios:
Publicar un comentario