Contexto
El 4 de septiembre fue lanzado una nueva versión del framework de codeigniter 4.4.1, y con ello algunos cambios en las rutas y uso de dicho framework.
En la versión actual ya no es tan fácil poder usar la url directa en el nevegador, es decir que se descargue el framework y que se pueda acceder al desarrollo del proyecto que se esté trabajando directamente desde la url, sino que se debe de lanzar con spark.
Éste dependerá de cada uno, pero cuando se trabaja en modo de desarrollo, se requieren realizar los procesos rápidos, y en lo personal, prefiero configurar el entorno de manera directa, por lo que se realizan los siguientes cambios para poder utilizarlo desde la url directamente.
Adicional a éste configuración, en los proyectos en entorno de desarrollo, en mi caso utilizo XAMPP, de tal modo que evito instalar PHP directamente en mi equipo.
Crear un proyecto con composer
Crear un proyecto o descargar el framework desde github
composer create-project codeigniter4/appstarter blog
Modificar app/Config/App.php
Abrir el archivo y buscar la línea 61 que dice $uriProtocol y cambiarlo a PATH_INFO:
[...] public string $uriProtocol = 'PATH_INFO'; [...]
Una vez editado el archivo, guardar y salir.
Archivo .env
Modificar el archivo .env añadiendo la url completa del proyecto:
[...] app.baseURL = 'http://localhost/blog/' [...]
Guardar el archivo
Archivo index.php
Copiar el archivo index.php de la ruta del proyecto vendor/codeigniter4/framework/public/ y pegarlo en la raíz del proyecto:
Abrir el archivo y buscar la línea que dice:
[...] require FCPATH . '../app/Config/Paths.php'; [...]
Y reemplazarlo por:
[...] require FCPATH . 'app/Config/Paths.php'; [...]
Añadir archivo .htaccess
El siguiente archivo añade la funcionalidad para acceder a las urls, proteger algunas rutas y archivos de configuración como el env:
# Disable directory browsing
Options All -Indexes
# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# If you installed CodeIgniter in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to the front controller, index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 index.php
</IfModule>
# Disable server signature start
ServerSignature Off
# Disable server signature end
<Files .env>
order allow,deny
Deny from all
</Files>
<Files spark>
order allow,deny
Deny from all
</Files>
<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
Permisos al proyecto
Finalmente se requiere asignar los permisos necesarios para el correcto funcionamiento del proyecto los cuales son los siguientes:
sudo chown -R daemon:tuUsuario directorio_proyecto
sudo chmod 775 directorio_proyecto -R
Abrir proyecto
Finalmente solo queda abrir la url que se estableció como ruta del proyecto en el navegador, y se podrá acceder a él sin problemas.
Y eso sería todo, y recuerden que ésto es sólo para entorno de desarrollo.
Gracias por visitar.