SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Meetups
@SergioCarracedoRoi Scroll CTO
Disfrutando del desarrollo web
desde 1998.
@rolando_caldas
https://rolandocaldas.com
En una galaxia muy lejana...
<?php
/**
* Configuración base de datos
*/
$dbname = 'adfadf';
$dbuser = 'adfadf';
$dbpassword = '123456';
$dbhost = 'localhost';
Meetups
… bueno… igual no tan lejana ...
Meetups
<?php
/**
* Configuración básica de WordPress 4.9.2
*/
define('DB_NAME', 'adfadfa');
define('DB_USER', 'adfadfa');
define('DB_PASSWORD','123456');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
[...]
$table_prefix = 'wp_';
define('WP_DEBUG', false);
/* ¡Eso es todo, deja de editar! Feliz blogging */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
Problemas de estos ficheros de configuración
Meetups
● El fichero tiene que modificarse en cada entorno (local, desarrollo, pre-producción, producción)
● Como es un **** decides que tu repositorio ignore el fichero de configuración
● Como no tienes fichero de configuración en tu entorno, tienes que tener uno de ejemplo
● Como tengas varios servicios integrado y cada uno con su fichero de configuración… el caos
está servido.
La solución: Variables de entorno
Meetups
Las variables de entorno son aquellas que están
asociadas al espacio de nombres global de PHP.
Consecuencia: No se crean en tu aplicación,
sino que le vienen dadas “desde fuera”.
Creando variables de entorno desde Apache
Meetups
<VirtualHost example.com:80>
...
SetEnv dbname adfadf
SetEnv dbuser adfadf
SetEnv dbpassword 123456
SetEnv dbhost localhost
...
</VirtualHost>
Creando variables de entorno desde NGINX
Meetups
location / {
...
fastcgi_param dbname adfadf;
fastcgi_param dbuser adfadf;
fastcgi_param dbpassword 123456;
fastcgi_param dbhost localhost;
...
}
… y así queda nuestra configuración ...
<?php
$dbname = getenv('dbname');
$dbuser = getenv('dbuser');
$dbpassword = getenv('dbpassword');
$dbhost = getenv('dbhost');
Meetups
… pero andar a editar Apache, NGINX ...
Meetups
Vance Lucas… tu phpdotenv nos da la vida
Meetups
● “Loads environment variables from .env to getenv()”
● “A PHP version of the original Ruby dotenv.” (https://github.com/bkeepers/dotenv)
● COMPATIBLE with PHP's built-in web server and CLI runner.
● Es inmutable. Salvo que le digas lo contrario, respeta las variables de entorno existentes.
● Puedes requerir la existencia de determinadas variables de entorno.
● Puedes requerir la existencia de determinadas opciones o drivers en tu entorno.
● Puedes obligar que determinadas variables de entorno no estén vacías.
● Puedes obligar que determinadas variables de entorno sean integers.
● En resumen: Su opciones y generación de excepciones pueden servir de documentación “al
vuelo” cuando configuras tu entorno local.
… y así queda nuestra configuración ...
<?php
$dotenv = new DotenvDotenv(__DIR__);
$dotenv->load();
dotenv->required(['dbname', 'dbuser',
'dbpassword', 'dbhost']);
?>
<?php
$dbname = getenv('dbname');
$dbuser = getenv('dbuser');
$dbpassword = getenv('dbpassword');
$dbhost = getenv('dbhost');
Meetups
… y así, todo fluye ...
Meetups
www.opsou.com www.pedrofigueras.com

Weitere ähnliche Inhalte

Was ist angesagt?

Taller Redis
Taller RedisTaller Redis
Taller Redis
betabeers
 
Nis Vs Ldap
Nis Vs LdapNis Vs Ldap
Nis Vs Ldap
Juan Bau
 
Apli t1 practicas_apache
Apli t1 practicas_apacheApli t1 practicas_apache
Apli t1 practicas_apache
garciadebora
 
1 verificación de paquetes de bind esté instalado con el comando 2
1 verificación de paquetes de bind esté instalado con el comando     21 verificación de paquetes de bind esté instalado con el comando     2
1 verificación de paquetes de bind esté instalado con el comando 2
FEDERICO MENDEZ
 
La api de salesforce
La api de salesforceLa api de salesforce
La api de salesforce
jesusnoseq
 

Was ist angesagt? (17)

Creacion de servidor web y dns
Creacion de servidor web y dnsCreacion de servidor web y dns
Creacion de servidor web y dns
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
Redis no es solo una caché
Redis no es solo una cachéRedis no es solo una caché
Redis no es solo una caché
 
Observium
ObserviumObservium
Observium
 
Observium
ObserviumObservium
Observium
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 
Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutos
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Nis Vs Ldap
Nis Vs LdapNis Vs Ldap
Nis Vs Ldap
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 
Apli t1 practicas_apache
Apli t1 practicas_apacheApli t1 practicas_apache
Apli t1 practicas_apache
 
Varnish http cache
Varnish http cacheVarnish http cache
Varnish http cache
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
1 verificación de paquetes de bind esté instalado con el comando 2
1 verificación de paquetes de bind esté instalado con el comando     21 verificación de paquetes de bind esté instalado con el comando     2
1 verificación de paquetes de bind esté instalado con el comando 2
 
Comandos gpg
Comandos gpgComandos gpg
Comandos gpg
 
La api de salesforce
La api de salesforceLa api de salesforce
La api de salesforce
 
Cifrado DD
Cifrado DDCifrado DD
Cifrado DD
 

Ähnlich wie PHPVigo #19 - Lightning variables de entorno

PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
Leonardo Cezar
 
Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBA
cyberleon95
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
Javier P.
 
Curso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion localCurso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion local
David Vaquero
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
RootedCON
 

Ähnlich wie PHPVigo #19 - Lightning variables de entorno (20)

Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1
 
DNS dinámico: Actualización dinámica de nombres en una red
DNS dinámico: Actualización dinámica de nombres en una redDNS dinámico: Actualización dinámica de nombres en una red
DNS dinámico: Actualización dinámica de nombres en una red
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
 
GOsa+samba+ldap
GOsa+samba+ldapGOsa+samba+ldap
GOsa+samba+ldap
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBA
 
Taller de Capistrano
Taller de CapistranoTaller de Capistrano
Taller de Capistrano
 
Mongo db course administration
Mongo db course   administrationMongo db course   administration
Mongo db course administration
 
Trabajo zabbix
Trabajo zabbixTrabajo zabbix
Trabajo zabbix
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Instalar servidores en debian
Instalar servidores en debianInstalar servidores en debian
Instalar servidores en debian
 
Curso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion localCurso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion local
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
WordPress Multisite, un WordPress para dominarlos a todos
WordPress Multisite, un WordPress para dominarlos a todosWordPress Multisite, un WordPress para dominarlos a todos
WordPress Multisite, un WordPress para dominarlos a todos
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 

Mehr von Rolando Caldas (6)

PHPVigo #28 principios solid en la vida real
PHPVigo #28   principios solid en la vida realPHPVigo #28   principios solid en la vida real
PHPVigo #28 principios solid en la vida real
 
PHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnitPHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnit
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHP
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hash
 
PHPVigo #16 - Lightning filter input
PHPVigo #16 - Lightning filter inputPHPVigo #16 - Lightning filter input
PHPVigo #16 - Lightning filter input
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
 

Kürzlich hochgeladen

Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
GuillermoBarquero7
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
EncomiendasElSherpa
 

Kürzlich hochgeladen (6)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOSESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
ESCRITORIO DE WINDOWS 11 Y SUS ELEMENTOS
 
Evaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdfEvaluación del riesgo tecnologías informáticas.pdf
Evaluación del riesgo tecnologías informáticas.pdf
 
Caso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business CentralCaso de Exito LPL Projects Logistics Spain y Business Central
Caso de Exito LPL Projects Logistics Spain y Business Central
 
2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx2da. Clase Mecanografía e introducción a Excel (2).pptx
2da. Clase Mecanografía e introducción a Excel (2).pptx
 
Trabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - OfimáticaTrabajo de Powerpoint - Unsaac - Ofimática
Trabajo de Powerpoint - Unsaac - Ofimática
 

PHPVigo #19 - Lightning variables de entorno

  • 1.
  • 2. Meetups @SergioCarracedoRoi Scroll CTO Disfrutando del desarrollo web desde 1998. @rolando_caldas https://rolandocaldas.com
  • 3. En una galaxia muy lejana... <?php /** * Configuración base de datos */ $dbname = 'adfadf'; $dbuser = 'adfadf'; $dbpassword = '123456'; $dbhost = 'localhost'; Meetups
  • 4. … bueno… igual no tan lejana ... Meetups <?php /** * Configuración básica de WordPress 4.9.2 */ define('DB_NAME', 'adfadfa'); define('DB_USER', 'adfadfa'); define('DB_PASSWORD','123456'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8mb4'); define('DB_COLLATE', ''); [...] $table_prefix = 'wp_'; define('WP_DEBUG', false); /* ¡Eso es todo, deja de editar! Feliz blogging */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . 'wp-settings.php');
  • 5. Problemas de estos ficheros de configuración Meetups ● El fichero tiene que modificarse en cada entorno (local, desarrollo, pre-producción, producción) ● Como es un **** decides que tu repositorio ignore el fichero de configuración ● Como no tienes fichero de configuración en tu entorno, tienes que tener uno de ejemplo ● Como tengas varios servicios integrado y cada uno con su fichero de configuración… el caos está servido.
  • 6. La solución: Variables de entorno Meetups Las variables de entorno son aquellas que están asociadas al espacio de nombres global de PHP. Consecuencia: No se crean en tu aplicación, sino que le vienen dadas “desde fuera”.
  • 7. Creando variables de entorno desde Apache Meetups <VirtualHost example.com:80> ... SetEnv dbname adfadf SetEnv dbuser adfadf SetEnv dbpassword 123456 SetEnv dbhost localhost ... </VirtualHost>
  • 8. Creando variables de entorno desde NGINX Meetups location / { ... fastcgi_param dbname adfadf; fastcgi_param dbuser adfadf; fastcgi_param dbpassword 123456; fastcgi_param dbhost localhost; ... }
  • 9. … y así queda nuestra configuración ... <?php $dbname = getenv('dbname'); $dbuser = getenv('dbuser'); $dbpassword = getenv('dbpassword'); $dbhost = getenv('dbhost'); Meetups
  • 10. … pero andar a editar Apache, NGINX ... Meetups
  • 11. Vance Lucas… tu phpdotenv nos da la vida Meetups ● “Loads environment variables from .env to getenv()” ● “A PHP version of the original Ruby dotenv.” (https://github.com/bkeepers/dotenv) ● COMPATIBLE with PHP's built-in web server and CLI runner. ● Es inmutable. Salvo que le digas lo contrario, respeta las variables de entorno existentes. ● Puedes requerir la existencia de determinadas variables de entorno. ● Puedes requerir la existencia de determinadas opciones o drivers en tu entorno. ● Puedes obligar que determinadas variables de entorno no estén vacías. ● Puedes obligar que determinadas variables de entorno sean integers. ● En resumen: Su opciones y generación de excepciones pueden servir de documentación “al vuelo” cuando configuras tu entorno local.
  • 12. … y así queda nuestra configuración ... <?php $dotenv = new DotenvDotenv(__DIR__); $dotenv->load(); dotenv->required(['dbname', 'dbuser', 'dbpassword', 'dbhost']); ?> <?php $dbname = getenv('dbname'); $dbuser = getenv('dbuser'); $dbpassword = getenv('dbpassword'); $dbhost = getenv('dbhost'); Meetups
  • 13. … y así, todo fluye ... Meetups