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.

Instalar CodeIgniter 3.1 con PHP 8.x: guía de mantenimiento

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 Me gusta 0
No me gusta No me gusta 0
Me encanta Me encanta 0
Divertido Divertido 0
Enfadado Enfadado 0
Triste Triste 0
¡Vaya! ¡Vaya! 0