CodeIgniter: Iniciación y configuración


El 9 Marzo 2008 – 13:00 | por Isern Palaus

CodeIgniter es uno de lo los muchos frameworks PHP que existen hoy en día. Para describir qué es un framework que mejor que una definición de la Wikipedia:

En el desarrollo de software, un framework es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, un framework puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

Lo primero que necesitamos es descargar la última versión de CodeIgniter, nosotros trabajaremos con la versión 1.6.1 que es la última hoy en día. Una vez descargada descomprimimos el archivo .rar y veremos una estructura tal que así:

[code]
/system/
/user_guide/
/index.php
/license.txt
[/code]

En la carpeta system hay todo el contenido del framework: helpers, librerías, plugins… Y lo más importante, la carpeta application que es realmente donde nuestra aplicación va a estar. Acto seguido tenemos el directorio user_guide, es la misma Guía del Usuario (en inglés) que hay en la web de CodeIgniter. A mi me parece una de las mejores guías que he leído nunca. El index.php gestiona la aplicación y el liecense.txt es la licencia, seria interesante que la leyerais.

Requisitos

  • Servidor
    • PHP 4.3.2 o superior
    • Una base de datos es lo más común en este tipo de aplicaciones, hay soporte para: MySQL (4.1+), MySQLi, MS SQL, Postgre, Oracle, SQLite y ODBC.

Instalación

La instalación de este framework es muy sencilla, y más si dejamos la configuración del mismo para otro apartado. Solo deberíamos subir los archivos a nuestro servidor (configurados) y ya estaría lista pero por motivos de seguridad, nosotros vamos a cambiar la jerarquía de los directorios. De un amigo, Víctor Román, aprendí que el acceso a la aplicación solo debería tenerla el servidor por lo que los directorios como application y system no deberían ser públicos. Para realizar esto usaremos un truco que, obviamente, podéis saltar si no os interesa o vuestro hosting no os lo permite.

Para empezar, necesitamos saber si podemos hacer una redirección de un dominio o subdominio, por ejemplo blog.ipalaus.es, a /ipalaus_es/subdominios/blog/public_html. Esto nos permitirá tener nuestros archivos del blog en un mismo directorio pero los públicos solo estarán en la carpeta public_html. Para empezar crearemos el directorio public_html en nuestra versión local y moveremos a esa misma carpeta el archivo index.php que teníamos en la raíz. Otra manía personal es poner los directorios application y system separados, porque podríamos, por ejemplo, usar siempre el mismo system para 3 o 4 aplicaciones y solo actualizar uno en vez de tener que hacerlo para cada uno… Así que movemos el application fuera de system. Debería quedarnos una jerarquía tal que así:

[code]
/application/
/public_html/
/public_html/index.php
/system/
[/code]
(El license.txt y la carpeta user_guide han sido borrados)

Ahora accedemos a editar el /public_html/index.php con cualquier editor de texto. Y editamos las siguientes lineas:

Archivo: /public_html/index.php, Línea: 26
[code lang="php"]
$system_folder = "../system";
[/code]

Archivo: /public_html/index.php, Línea: 43
[code lang="php"]
$application_folder = "../application";
[/code]

Y con esto ya tenemos configurada nuestra jerarquía. Ahora toca hacer una configuración básica del sistema.

Configuración

La configuración básica de nuestra aplicación se basará en la configuración de los archivos config.php y database.php, ambos en /application/config/. Para empezar, el config.php, lo abrimos con nuestro editor de textos favorito. Hay algunas cosas que simplemente las paso por alto, variables que no nos hacen falta para nada en una configuración básica.

Archivo: /application/config/config.php, Línea: 14
[code lang="php"]
$config['base_url'] = "http://blog.ipalaus.es/";
[/code]

La variable $config['base_url'] corresponde a la dirección que CodeIgniter interpretará como base cuando tenga que incluir ficheros o similar. Es muy importante que sea correcta. Otros ejemplos podrían ser: http://localhost/blog, http://www.ipalaus.es/

Archivo: /application/config/config.php, Línea: 26
[code lang="php"]
$config['index_page'] = "index.php";
[/code]

Esta variable la usaremos en caso de que hayamos renombrado nuestro archivo index.php (en /public_html), cosa que dudo… De todos modos, si queremos usar mod_rewrite de Apache tendremos que dejar en blanco. En otra entrada explicaré como usar mod_rewrite en CodeIgniter.

Archivo: /application/config/config.php, Línea: 57
[code lang="php"]
$config['url_suffix'] = "";
[/code]

Hay gente que tiene la “manía” de ponerle sufijos a las direcciones web… Quizá para ocultar que realmente es PHP o poner una extensión significativa. Si pusiéramos algo tipo $config['url_suffix'] = “html”;, todas las direcciones nos saldrían tipo: http://blog.ipalaus.es/entradas/codeigniter-configuracion-basica.html, siendo este archivo, PHP.

Archivo: /application/config/config.php, Línea: 69
[code lang="php"]
$config['language'] = "spanish";
[/code]

Desde la web de uno de los creadores de CodeIgniter, Derek Allard, podemos descargar el archivo de idioma spanish. Su instalación es tan sencilla como, descomprimir el fichero y mover su contenido a /application/language/spanish/. Dentro del directorio spanish deben estar los archivos .php y no ningún directorio más. Este archivo de lenguaje es, generalmente, para errores y mensajes relacionados con las librerías del framework.

Archivo: /application/config/config.php, Línea: 234-241
[code lang="php"]
$config['sess_cookie_name'] = 'blogipalaus_session';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
[/code]

Esta parte es usada solo si usamos sesiones en nuestras aplicaciones… Aunque si vamos a usar PHP para programar nuestro sitio web, lo más probable es que las usemos. Lo más característico de esta parte es poder usar la base de datos para gestionar las sesiones. Si lo quisiéramos, deberíamos cambiar la variable $config['sess_use_database'] a TRUE.

Archivo: /application/config/config.php, Línea: 266
[code lang="php"]
$config['global_xss_filtering'] = TRUE;
[/code]

Activaremos el filtro de XSS por si las moscas… Nunca se sabe ;-) .

Ahora ya hemos terminado con el config.php y pasamos a la configuración de database.php que, obviamente, es más sencilla. En CodeIgniter es posible usar varios perfiles de base de datos, por si tenemos una base de datos de desarrollo y una de producción o miles de configuraciones más.

Archivo: /application/config/config.php, Línea: 40-51
[code lang="php"]
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "ipalaus";
$db['default']['password'] = "ejemplo";
$db['default']['database'] = "blog";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
[/code]

Como podéis comprobar es bien sencillo. Colocar el nombre de usuario, la base de datos, el host de la misma… Si quisiéramos usar una base de datos diferente a MySQL deberíamos cambiar el $db['default']['dbdriver'] por el deseado. A parte, es posible usar cache para las consultas MySQL… pero es algo bastante avanzado y que a usuarios de a pié no es muy necesario.

Conclusión

Espero que esta pequeña introducción a CodeIgniter, a nivel muy básico, sirva a alguien para animarse a programar usando este framework. Pretendo continuar añadiendo configuraciones y pequeños programas y ejemplos para que podáis incrementar vuestro nivel de conocimiento en CodeIgniter.

Descarga CodeIgniter en Español y semiconfigurado: CodeIgniter_1.6.1-spanish.rar

Tags: , ,

  1. 21 Comentarios a “CodeIgniter: Iniciación y configuración”

  2. Por SGomez el Mar 15, 2008 | Responder

    Hola,
    ¿Consideras que este Framework puede competir de igual a igual que ZendFramework? El framework creado y mantenido por gurus y entusiastas del PHP de toda la vida.

    un saludo

  3. Por Isern Palaus el Mar 15, 2008 | Responder

    Hola SGomez,

    No he usado ZendFramework pero se que framework es. Creo que si que puede competir, aunque tiene algunas diferencias… uno tiene ciertas cosas, el otro tiene ciertas otras, como todo. Lo más curioso es que en CodeIgniter, si quieres, puedes usar librerías y helpers de ZendFramework. Tengo que probarlo algún día ;-)

    Gracias por tu comentario. Un saludo,
    – Isern Palaus

  4. Por misterio el Mar 19, 2008 | Responder

    hola amigo… toy de acuerdo con tus comentarios del framework pero kisiera pedirte un favor :( tengo un proyecto hecho con este framework pero no se como colgarlo en mi spacio web q es uno gratuito, si por ahi puedes dar un explicacion mas detalladita te lo agradeceria y kedaria en deuda contigo…desde ya las gracias suerte

  5. Por Isern Palaus el Mar 22, 2008 | Responder

    Hola misterio,

    Pues que sea gratuito no debería influir para nada en poder usarlo para CodeIgniter. Si tiene soporte PHP y soporte MySQL puede funcionar perfectamente.

    Quizá lo que no puedas usar es el truco de tirar un directorio atrás por lo que te recomiendo en que, simplemente, elidas el paso en que explico como cambiar el directorio y dejar los que vienen por defecto. Debería ser suficiente para que funcionase correctamente ya que que sea gratuito no implica en que sea “malo”.

    Si hay alguna cosa más no dudes en contactar.

    Un saludo y hasta pronto,
    – Isern Palaus

  6. Por misterio el Mar 24, 2008 | Responder

    hola man!! :D buena loco! esta perfecto tienes razon, no era por ser gratuito… ya resolvi too problema para subirlo, ya habia entendido que el index.php que viene en el framework es.. como el gestor que hace correr al framework, y ese index.php es el le debia brindar a mi espacio web, como inicial… gracias por tu publicacion espero aportar algo con mis experiencias futuras con este framwork :D … no te preocupes q no tube problemas con direccionar las carpetas… :D

  7. Por Alberto el Abr 7, 2008 | Responder

    Gracias por la explicación Isern Palaus sobre todo como separar las carpetas :D

    El manual de CI me parece muy claro pero demasiado corto :( y buscando información llegue a tu blog, por cierto bastante interesante.

    Tengo una duda pero primero seguire leyendo tus artículos sobre CI y tal vez encuentre respuestas.

    Saludos.

  8. Por Isern Palaus el Abr 8, 2008 | Responder

    Hola Alberto,

    Gracias a ti por haber llegado hasta aquí y comentar. La verdad es que se agradece mucho el apoyo :-) .

    Jajaja, si es bastante corto. Te explica las funciones… y punto. Yo también tuve que buscarme la vida para hacer una primera aplicación.

    Cualquier cosa, no dudes en preguntar.

    Un saludo,
    – Isern Palaus

  9. Por Yan el Jul 11, 2008 | Responder

    Hola Isern Palaus!
    desde hace un mes ya llevo praticando con CI pero aun tengo algunas dudas, por ejemplo, como puede insertar datos de un formularios en tablas distintas y que asu ves ellas estan relacionadas.

    Gracias,

    Yan Heinz

  10. Por ViktorLozano el Jul 12, 2008 | Responder

    Isern!!

    Excelente este artículo (y los demás). Perdona si consideras que esto es spam pero no lo hago con esa intención. Días atrás hable con Derek Allard para la traducción de la userguide de CI al español y su posterior difusión. Ahora, gracias al invaluable aporte de Seppo, Pablo y Pablito de la lista de codeIgniter en español, la guía se encuentra lista en:

    http://www.conocimientovirtual.edu.co/descargas.html

  11. Por minerva el Ago 9, 2008 | Responder

    Hola Isern quisiera saber donde hago mis consultas van dentro de una clase o función y en que parte va en el modelo??.
    Espero tu respuesta

  12. Por Jorgelig el Sep 3, 2008 | Responder

    Que tal me parecio muy interesante tu articulo y me aclaro algunas cosas; estoy haciendo mis primeras pruebas y me eh atorado. Estoy intentando usar la libreria Redux para autentificacion. Tengo el problema que los da de alta pero como desactivados, mas info de este problema por aca:
    http://www.cristalab.com/foros/t60563_problemas-con-la-libreria-redux-para-codeigniter.html

    Mi segundo problema es que si al poner los el tag automaticamente me cierra el tag al llamar el primer view.

    El proyecto de prueba lo tengo aca: http://www.jadistribuciones.musicasd.com/

    Gracias.

  13. Por Metal el Sep 4, 2008 | Responder

    Mira el cambio en:

    Archivo: /public_html/index.php, Línea: 26
    $system_folder = "../system";

    Me saca un herros asi:

    Warning: require_once(../system/codeigniter/CodeIgniter.php) [function.require-once]: failed to open stream: No such file or directory in C:\AppServ\www\CodeIgniter\index.php on line 115

    Puede halguien decirme que hice mal.

  14. Por Jose Miguel el Sep 22, 2008 | Responder

    Hola bueno yo ya llevo un buen cacho del tuto en español que anda ahi por la web.. es practicamente el user guide oficial pero traducido xD, bueno el caso es que de momento ya se lo que es un controlador, lo de las vistas, pero me creé una vista en la cual use una imagen de background y en mi pc si funciona pero cuando la subí no jaló no encuentra las imagenes, ya cambie las rutas en el archivo php de la vista y no las encuentra a la hora de entrar a la web, no se en que me falla, pero la cosa esta asi masomenos:
    Cmo todos sabemos, el directorio raiz de todo hosting pagado es httpdocs, dentro de esta carpeta fue donde metemos la carpeta de system y ahi mismo dejamos el index.php, y ahi mismo coloque las imagenes de mi vista principal, sólo que no jal las imagenes en el archivo estan asi:
    ../../../bg.png
    y no lo muestra pero si lo pongo en el dreamweaver en modo diseño si se ve el fondo porque en mi web no? espero no aburrirlos con todo esto , pero creo que este b log es muy bueno xD felicidades por el aporte xD

  15. Por jerome el Oct 14, 2008 | Responder

    Buenas
    Me parece un buen framework dnd inciarse

  16. Por José Miguel el Feb 21, 2009 | Responder

    Hola bro puesmira cosas del destino… ya habia perdido esta web… pero acabo de ver mi post.. y ps nunca respondiste xD
    espero que sigas vivo que aun tiene mucho que enseñarnos xD
    linda la web espero sigas activo en esto….
    Saludos

  17. Por Miguel Quiroz el Sep 19, 2009 | Responder

    Alguien sabe como cerrar las conexiones en la Base de datos utilizando el codeigniter, Ejmplo $this->database->close() o algo parecido, es urgente al parecer codeigniter me deja abiertas las conexiones

  18. Por alann el Dic 15, 2009 | Responder

    Hola tengo un problema al instalar mi coddeigniter en un subdominio de mi web, al quere entrar a cualquier parte del proyecto me redirecciona nuevamente a la misma pagina, y no logro entrar a ningun lado de mi aplicacion.
    El site es http://www.sistemas.misprogramitas.com, ojala y puedas ayudarme, las rutas estan al parecer bien.

  1. 4 Trackback(s)

  2. Mar 11, 2008: Isern Palaus » CodeIgniter: Aplicación Básica (I), Creación de un Blog
  3. Mar 17, 2008: Isern Palaus » Consultas MySQL en CodeIgniter
  4. Abr 9, 2008: Blog Isern palaus « La Terminal
  5. Sep 2, 2008: Iniciando en CodeIgniter. | Jorgelig

Dejar un comentario