Variables a nivel de servidor en laravel
Hace unos días estudiamos vimos cómo se comportan las variables de entorno y configuración en laravel. El día de hoy revisaremos un tema complementario y es el flujo entre las variables a nivel de servidor y las de la configuración de laravel.
Definición de variables a nivel de servidor
Si has realizado los pasos en nuestro post configurar un virtual host en laravel con apache, muy seguramente ya tengas un proyecto de laravel instalado y configurado para funcionar en un serverName
creado para tal efecto. Vamos entonces a realizar una modificación sobre la definición del sitio y a crear una variable a nivel de servidor con apache que defina el nombre de nuestra aplicación.
<VirtualHost *:80>
ServerName example.localhost.com
DocumentRoot "${SRVROOT}/htdocs/example/public/"
...
SetEnv APP_NAME ExampleApp
...
</virtualhost>
Como puedes observar la directiva SetEnv
permite definir variables en apache que podrían pasar a scripts CGI o páginas SSI.
Uso de variables definidas a nivel de servidor
Ahora vamos a ir directamente al archivo welcome.blade.php en la carpeta resources/views y vamos a cambiar la parte del contenido en donde se muestra el texto Larevel de tal forma que tome el nombre de la aplicación desde la configuración.
<div class="content">
<div class="title m-b-md">
<?= config('app.name') ?>
</div>
...
</div>
Una vez hecho esto al acceder a la página principal de la aplicación deberemos ver el pantallazo incial del framework modificado.
Lo que acaba de suceder es posible ya que las cualquier variable en el archivo .env puede ser sobreescrita por variables a nivel de servidor como la que definimos en la configuración del apache. Si te das cuenta, en el archivo de configuración .env hay una variable definida para el nombre de la aplicación.
APP_NAME=Laravel
Sin embargo en la vista welcome no hemos utilizado el helper env
sino el helper config
, con lo cuál la variable se trae del archivo app.php del directorio config.
'name' => env('APP_NAME', 'Laravel')
Esta variable en útlimas consulta el valor de la variable en el archivo .env, sin embargo, la variable ha sido sobreescrita por la configuración de servidor. Este esquema de configuración permite que la aplicación tome valores según el entorno en el cuál se encuentre instalado. Por otro lado, tal vez resulte un poco engorroso definir una variable tanto en el archivo .env como en los archivos de configuración, sin embargo, cuando realicemos una revisión de cómo laravel guarda el cache para estos archivos de forma que la aplicación pueda optimizarse entenderemos un poco más la importancia de este esquema. Por ahora, ten en cuenta que como recomendación se debería utilizar el helper env
solamente en archivos de configuración. Hasta la próxima.