CodeIgniter 4 tela branca: CI_ENVIRONMENT e o erro que sumiu

Tela branca no CodeIgniter 4, código-fonte da página vazio, nenhum aviso, nenhum 500 na tela. Não é bug misterioso: seu .env está em production, e produção desliga a exibição de erro. O erro aconteceu, você é que não está vendo.

Trocar o ambiente no .env

cd /var/www/meuapp

# se ainda nao existe .env, o CI4 traz um modelo chamado env
cp env .env

sed -i 's/^#? *CI_ENVIRONMENT.*/CI_ENVIRONMENT = development/' .env
grep CI_ENVIRONMENT .env

Recarregue a página e o erro aparece com stack trace. O framework carrega um arquivo de boot por ambiente: app/Config/Boot/production.php deixa o display_errors em 0, enquanto app/Config/Boot/development.php liga tudo com E_ALL. A linha do .env vem comentada de fábrica e, sem ela, o CI4 assume production.

Trocou e continuou branco? O ambiente pode estar vindo de fora. O carregador do .env não sobrescreve variável que já existe, então um fastcgi_param CI_ENVIRONMENT production; no nginx ou um env[CI_ENVIRONMENT] = production no pool do PHP-FPM ganha do arquivo.

O log já estava lá

sudo chown -R www-data:www-data writable
sudo chmod -R 775 writable

tail -n 50 writable/logs/log-2026-08-31.log

É um arquivo por dia, no formato log-AAAA-MM-DD.log. Se writable/logs não tem permissão de escrita para o usuário do PHP-FPM, você fica sem log e sem tela, que é o branco total. Confira também o $threshold em app/Config/Logger.php: no padrão 4 ele só grava de error para cima, então warning (5), notice (6) e debug (8) nem chegam no arquivo. Suba para 9 enquanto estiver caçando o problema.

Terminou de investigar, volte o CI_ENVIRONMENT para production no mesmo minuto e devolva o $threshold para 4. Stack trace do CI4 mostra trecho de arquivo e variável de ambiente, senha de banco incluída, para qualquer um que provocar o erro de novo.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *