Instalar CodeIgniter 3.1 con PHP 8.x: guía de mantenimiento
Configura un proyecto CodeIgniter 3 existente en PHP 8.x con un fork mantenido y verifica su despliegue.
CodeIgniter 3 sigue siendo útil para aplicaciones existentes, pero la versión original 3.1.13 es anterior a las versiones recientes de PHP. En PHP 8.2 y posteriores, el código heredado puede producir avisos de obsolescencia y errores de tipo. Planifica una migración probada en lugar de cambiar archivos del framework indiscriminadamente.
Requisitos
Utiliza una versión de PHP compatible con el fork elegido, Apache o Nginx y las bases de datos y extensiones que requiera tu aplicación. Para MySQL, activa mysqli. Comprueba por separado la versión y módulos PHP de la web y la CLI; pueden ser distintos.
php -v
php -m
Obtener el código
El archivo de la etiqueta 3.1.13 proporciona una copia histórica. Para mantener una aplicación con PHP actual, examina el fork de CodeIgniter 3 de pocketarc y sus versiones. Busca conservar el comportamiento de CI3 y admitir versiones modernas de PHP. Revisa cambios, licencia y el código de tu proyecto.
wget https://github.com/bcit-ci/CodeIgniter/archive/refs/tags/3.1.13.zip
unzip 3.1.13.zip
mv CodeIgniter-3.1.13 my-project
cd my-project
Configurar la aplicación
Define base_url en application/config/config.php y las credenciales en application/config/database.php. Mantén los secretos fuera del repositorio. Usa configuración específica de producción y una cuenta de base de datos con los permisos necesarios.
$config['base_url'] = 'https://example.com/';$db['default'] = array(
'hostname' => 'localhost',
'username' => 'db_user',
'password' => 'YOUR_SECRET',
'database' => 'db_name',
'dbdriver' => 'mysqli'
);
Compatibilidad con PHP 8
Los avisos sobre null o tipos no contables deben investigarse en la llamada concreta. Sustituir sin criterio strlen($str) por strlen((string)$str), o count($data) por count((array)$data), puede alterar la lógica y ocultar errores. Prefiere un fork mantenido y probado; corrige de forma deliberada tu código y sus bibliotecas.
Permisos de archivos
Solo application/cache y application/logs necesitan escritura cuando se utilizan. Da acceso al servidor web en esos directorios; evita que pueda modificar todo el proyecto o aplicar permisos recursivos demasiado abiertos.
sudo chown -R www-data:www-data application/cache application/logs
sudo chmod -R u+rwX,g+rX application/cache application/logs
Ejemplo Nginx
Si la raíz web es el directorio del proyecto, bloquea el acceso directo a application, system, archivos ocultos y scripts PHP arbitrarios. Envía las solicitudes a index.php y adapta el socket PHP-FPM. Añade HTTPS, registros y medidas específicas antes de producción.
server {
listen 80;
server_name example.com;
root /var/www/my-project;
index index.php;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ ^/(application|system)/ { deny all; }
location ~ /\. { deny all; }
location ~ \.php$ { return 404; }
location = /index.php {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
Comprobar y publicar
Prueba rutas, operaciones de base de datos y registros con la versión PHP de destino. Utiliza el modo de desarrollo solo en pruebas locales; en producción no muestres errores al público. Haz copias de aplicación y base antes de reemplazar archivos del framework.
define('ENVIRONMENT', 'production');
Documentación
Fork mantenido: https://github.com/pocketarc/codeigniter ; instalación original 3.1.13: https://codeigniter.com/userguide3/installation/index.html. Para un proyecto nuevo, considera CodeIgniter 4.
Compartir
¿Cuál es tu reacción?
Me gusta
0
No me gusta
0
Me encanta
0
Divertido
0
Enfadado
0
Triste
0
¡Vaya!
0