Variables a nivel de servidor en laravel

2019-07-09 Laravel
Tags   Laravel 5.8

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.

laravel welcome 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.

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.