Notice: Undefined index: Archivo in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Archivo in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: https://codigolinea.com/archivo/ in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 443
Notice: Undefined index: Sobre mi in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Sobre mi in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Instalando Zend Framework in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Instalando Zend Framework in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Instalando Zend Framework in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Zend Famework 1.6.2 y 1.7.0PR in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Zend Famework 1.6.2 y 1.7.0PR in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Zend Famework 1.6.2 y 1.7.0PR in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: ZF2 Crear un nuevo módulo II in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: ZF2 Crear un nuevo módulo II in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Hola Mundo :: Empezando con ZF2 in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Hola Mundo :: Empezando con ZF2 in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: ZF2 Introducción a los Módulos I in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: ZF2 Introducción a los Módulos I in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Strategy Pattern en acción con PHP in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Strategy Pattern en acción con PHP in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Strategy Pattern en acción con PHP in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Strategy Pattern (Patrón Estrategia) in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Strategy Pattern (Patrón Estrategia) in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Comparación y Rendimiento de Frameworks PHP in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Comparación y Rendimiento de Frameworks PHP in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Estilo de programación y convención de nombres I in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Estilo de programación y convención de nombres I in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Estilo de programación y convención de nombres II in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: Estilo de programación y convención de nombres II in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 400
Notice: Undefined index: MySql in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: https://codigolinea.com/category/mysql/ in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 523
Notice: Undefined index: General in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: 97-things in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: JavaScript in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: TypeScript in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: Cheat Sheet in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: Zend Framework in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 506
Notice: Undefined index: https://codigolinea.com/category/phpcategory/zend-framework/ in /home/codigoli/public_html/wp-content/plugins/seo-automatic-links/seo-links.php on line 523
Los archivos .INI sirven para almacenar parámetros de configuración y por su sencillez es muy utilizado por la mayoría de aplicaciones.
Zend Framework nos ofrece un componente para poder leerlos, llamado Zend_Config_Ini el cual esta apoyado en el parse_ini_file() de PHP.
Al ser archivos planos es fácil de leerlos, incluso a través del navegador web y eso lo hace muy vulnerable, ya que si no esta correctamente protegido, cualquiera puede leer nuestros parámetros de configuración y acceder a contraseñas, rutas de archivos, entre otras cosas.
Nuestros archivos .INI siempre deberían estar ubicados por encima del la raíz web de nuestro servidor.
Supongamos que tenemos la siguiente distribución de carpetas de nuestra aplicación
[INI]
application/
config/
database.ini
controllers/
models/
views/
scripts/
helpers/
filters/
web/
.htaccess
index.php
[/INI]
Todo lo contenido dentro de application debería estar estar fuera del acceso vía web, eso sería lo ideal, pero no siempre es así, ya que puede ocurrir que nos encontremos en un entorno donde no podemos contar con dichas facilidades, entonces debemos tomar las precauciones del caso.
Supongamos que estamos trabajando en un subdominio, o en una carpeta por debajo del árbol de la web, la distribución de carpetas de nuestra aplicación sería algo parecido a esto.
[php]
web/my_aplication/
application/
config/
database.ini
controllers/
models/
views/
scripts/
helpers/
filters/
html/
index.php
.htaccess
[/php]
Quedaríamos expuestos y solo protegidos por las reglas declaradas dentro del .htaccess, ¿entonces que más podemos hacer?.
La solución es bien sencilla, consiste en convertir a nuestros archivos .ini en archivos .php y poner toda la información dentro de comentarios, de esa manera no podrán ser visualizados.
database.ini.php
[php]
mysql
database.params.host = localhost
database.params.username = dbuser
database.params.password = secret
database.params.dbname = myDB
database.params.profiler = false
*/
[/php]
Y lo usamos como cualquier otro archivo .INI
[php]
require_once ‘Zend/Config/Ini.php’;
$config = new Zend_Config_Ini(‘database.ini.php’, ‘production’);
echo $config->$database->$params->$host; // prints "localhost"
echo $config->$database->$params->$dbname; // prints "myDB"
[/php]
Así de sencillo, yo siempre lo uso de esa manera, y me quito la preocupación de que si algo falla, alguien pueda acceder a dicho fichero y leerlo.
Hay muchas otras soluciones a nivel de Servidor ¿pero si no tenemos acceso?, o usando la configuración a través de arrays(), pero la idea es no perder la simplicidad de los archivos .INI.
Excelente tip! No lo sabía y me acaba de salvar la vida. Saludos
Que bueno que te haya sido de utilidad
colocando en el navegador database.ini.php tambien muestra el contenido
Hola Rebeca
si se muestra el contenido quizá anda mal alguna configuración del servidor, por que el contenido de .ini esta dentro de los comentarios de php.
[php]
http://www.codigolinea.com
database.adapter = pdo_mysql
database.params.host = localhost
database.params.username = dbuser
database.params.password = secret
database.params.dbname = myDB
database.params.profiler = false
*/
[/php]