Instalar o CodeIgniter 3.1 com PHP 8.x: guia de manutenção

Configure um projeto CodeIgniter 3 existente no PHP 8.x com um fork mantido e confira a implantação.

Instalar o CodeIgniter 3.1 com PHP 8.x: guia de manutenção

O CodeIgniter 3 continua útil para aplicações existentes, mas a versão original 3.1.13 precede versões recentes do PHP. No PHP 8.2 e posteriores, código legado pode produzir avisos de descontinuação e erros de tipo. Planeje uma migração testada em vez de trocar trechos do framework indiscriminadamente.

Requisitos

Use uma versão de PHP suportada pelo fork escolhido, Apache ou Nginx e as bases de dados e extensões exigidas pela aplicação. Para MySQL, habilite mysqli. Verifique separadamente versões e módulos PHP da web e da CLI; eles podem diferir.

php -v
php -m

Obter o código

O arquivo da tag 3.1.13 fornece uma cópia histórica. Para manter uma aplicação em PHP atual, examine o fork CodeIgniter 3 da pocketarc e seus lançamentos. Ele procura preservar o funcionamento do CI3 com suporte a novas versões do PHP. Confira mudanças, licença e seu próprio código.

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 a aplicação

Defina base_url em application/config/config.php e a conexão em application/config/database.php. Mantenha segredos fora do repositório. Use configuração própria para produção e uma conta de banco com apenas os privilégios necessários.

$config['base_url'] = 'https://example.com/';
$db['default'] = array(
    'hostname' => 'localhost',
    'username' => 'db_user',
    'password' => 'YOUR_SECRET',
    'database' => 'db_name',
    'dbdriver' => 'mysqli'
);

Compatibilidade com PHP 8

Avisos sobre null ou tipos não contáveis exigem investigação no ponto de chamada. Substituir sem critério strlen($str) por strlen((string)$str), ou count($data) por count((array)$data), pode mudar o comportamento e ocultar erros. Prefira um fork mantido e testado; corrija intencionalmente código e bibliotecas do projeto.

Permissões

Apenas application/cache e application/logs precisam de escrita quando essas funções são usadas. Dê acesso ao servidor web nesses diretórios, sem permitir que ele altere toda a árvore do projeto ou aplicar permissões recursivas excessivas.

sudo chown -R www-data:www-data application/cache application/logs
sudo chmod -R u+rwX,g+rX application/cache application/logs

Exemplo Nginx

Se a raiz web for a pasta do projeto, bloqueie acesso direto a application, system, arquivos ocultos e scripts PHP arbitrários. Direcione pedidos a index.php e adapte o socket PHP-FPM. Inclua HTTPS, registros e proteção adicional antes da produção.

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;
    }
}

Verificar e implantar

Teste rotas, banco de dados e logs na versão alvo do PHP. Use o modo de desenvolvimento apenas em testes locais; em produção, não exiba erros publicamente. Faça backup da aplicação e do banco antes de trocar arquivos do framework.

define('ENVIRONMENT', 'production');

Documentação

Fork mantido: https://github.com/pocketarc/codeigniter ; instalação original 3.1.13: https://codeigniter.com/userguide3/installation/index.html. Para projeto novo, considere CodeIgniter 4.

Partilhar

Qual é a sua reação?

Gosto Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0