CodeIgniter 4 Estructura de la aplicación

Es muy importante al trabajar con CodeIgniter 4 comprender como se estructura de forma predeterminada nuestra aplicación en una instalación nueva.

Directorios predeterminados

luego de la Instalación de CodeIgniter 4 en la raíz de la aplicación nos encontraremos con 5 directorios, los cuales cuentan con un papel muy importante en nuestra aplicación que se estructuran de la siguiente forma.

App

El directorio App es donde reside todo el código necesario para la aplicación y cuenta con varios directorios en su interior, se estructura de la siguiente forma

  • Config/: directorio donde se almacenan todos los archivos de configuración esenciales para el correcto y optimo funcionamiento de la aplicación, por ejemplo los archivos App.php(archivo de configuración de la aplicación), Routes.php(archivo de configuración donde se establecen las rutas de la aplicación),Database.php(archivo de configuración donde se establece la base de datos o bases de datos  a usar en la aplicación) se encuentran aquí. 
  • Controllers/:Directorio donde se definen los controladores para la aplicación.
  • Database/:Almacena las migraciones de las bases de datos y los archivos semilla.
  •  Filters/: Almacena las clases filtros que pueden ejecutarse antes y después del los controladores.
  •  Helpers/:Almacena una colección de helpers  dicho de otra forma colección de funciones independientes que pueden facilitar el trabajo del desarrollador.
  • Language/:Almacena el soporte para idiomas de la aplicación.
  • Libraries/:Una colección de clases que puede utilizar para agregar funcionalidad a su aplicación. La biblioteca en sí no es una parte central de CodeIgniter y puede eliminarse o actualizarse según sea necesario.
  • Models/:Almacena los modelos que funcionan con la base de datos de la aplicación.
  • ThirdParty/:Almacena bibliotecas de terceros que se pueden utilizar en la aplicación.
  • Views/: Almacena las vistas con las que interactúa el usuario.

System

Este directorio almacena los archivos que componen el propio marco del framework, si bien tiene mucha flexibilidad en cómo usa el directorio de la aplicación, los archivos en el directorio del sistema nunca deben modificarse. En su lugar tiene que ampliar las clases o crear nuevas clases para proporcionar la funcionalidad deseada.

Public

La carpeta pública contiene la parte de su aplicación web accesible al navegador, lo que impide el acceso directo a su código fuente. Contiene el archivo .htaccess principal, index.php , y cualquier recurso de aplicación que agregue, como CSS, JavaScript o imágenes.

Esta carpeta está destinada a ser la «raíz web» de su sitio y su servidor web estaría configurado para apuntar a ella.

Writable

Este directorio contiene todos los directorios necesarios para escribir durante la vida de una aplicación. Esto incluye directorios para almacenar archivos de caché, registros y cualquier carga que un usuario pueda enviar. Debe agregar aquí cualquier otro directorio en el que su aplicación deba escribir. Esto le permite mantener sus otros directorios principales sin escritura como medida de seguridad adicional.

Tests

Este directorio está configurado para contener sus archivos de prueba. el directorio _support contiene varias clases simuladas y otras utilidades que puede utilizar mientras escribe sus pruebas. No es necesario transferir este directorio a sus servidores de producción.

https://codeigniter.com

https://codeigniter.com/download

https://codeigniter.com/user_guide/intro/index.html

https://codeigniter.com/user_guide/concepts/structure.html


Como solucionar el error Cache unable to write to «/var/www/html/ci/writable/cache/» de CodeIgniter 4 en apache linux

Introducción

Uno de los primeros errores que puedes encontrar al trabajar con CodeIgniter en Linux es el mensaje: “Cache unable to write to «/var/www/html/ci/writable/cache/»”. Este problema es común para los nuevos usuarios de CodeIgniter en Linux, aunque no tanto en Windows.

¿Por qué ocurre este error?

La causa principal de este error son los permisos de directorios en Linux. Dependiendo de la distribución que uses (Ubuntu, Debian, Mint, Arch, Fedora), el servidor web puede tener diferentes nombres (por ejemplo, en Fedora se llama httpd en lugar de apache).

Como Solucionarlo?

La solución es otorgar permisos de escritura y lectura al usuario del servidor web para el directorio writable de el proyecto CodeIgniter.

pero que es el usuario del servidor web?

la respuesta es «una cuenta de usuario en el sistema operativo que se utiliza para ejecutar el servicio de apache. Este usuario tiene permisos específicos y limitados para garantizar la seguridad del servidor web».

necesitamos otorgarle permisos de escritura y lectura al usuario del servidor web, del el directorio writable de nuestro proyecto de CodeIgniter,para ello lo asignaremos como el propietario del directorio writable y le concederemos los permisos de escritura y lectura.

Asignar al www-data como propietario del directorio writable

Basta con ejecutar el siguiente comando en nuestra terminal de Linux.

En Debian,Ubuntu

sudo chown www-data:www-data -R /var/www/html/codeigniter/writable

En fedora

sudo chown apache:apache -R /var/www/html/codeigniter/writable

En ArchLinux

sudo chown http:http -R /var/www/html/codeigniter/writable

El comando chown permite cambiar el propietario y grupo del directorio.

Asignamos lo permisos

En esta parte solo basta con otorgarle los permisos necesarios al directorio writable,de la siguiente forma.

sudo chmod 755 /var/www/html/codeigniter/writable/

El comando chmod sirve para cambiar los permisos de un archivo o carpeta. Para usarlo, solo tienes que decir qué permisos quieres y a qué archivo o archivos se los quieres cambiar.con el 755 como configuración de permisos El dueño de la carpeta puede hacer lo que quiera con ella. Los demás solo pueden ver lo que hay dentro, pero no pueden añadir ni borrar archivos. Este tipo de configuración es común para carpetas que quieres compartir con otros.