Como Ajustar o Codiad para Funcionar com PHP 7.2 e Superiores


O Codiad é uma ferramenta leve e prática para desenvolvimento web, mas pode enfrentar problemas de compatibilidade com PHP 7.2 e versões superiores devido a mudanças nas funções e na sintaxe do PHP. Neste post, vamos mostrar como ajustar o Codiad para funcionar corretamente em ambientes que utilizam PHP atualizado.

Problema Comum

Ao tentar rodar o Codiad com versões recentes do PHP, você pode se deparar com erros ou mensagens relacionadas a funções obsoletas ou redefinições de funções já presentes no core do PHP. Um exemplo comum é o erro envolvendo as funções mb_ord() e mb_chr() que foram introduzidas a partir do PHP 7.2, causando conflitos com a tentativa do Codiad de redeclará-las.

Outro problema que pode ocorrer é relacionado à variável de sessão no Filemanager, que impede a correta inicialização dos projetos ao carregar.

Soluções e Ajustes

Aqui estão algumas formas de resolver esses problemas e continuar usando o Codiad em ambientes atualizados:


1. Suprimir Erros Relacionados a Código Depreciado

Uma maneira simples de fazer o Codiad funcionar, especialmente em relação a erros de código depreciado, é desativar a exibição de alguns tipos de mensagens de erro. Isso pode ser feito editando o arquivo index.php do Codiad e adicionando a seguinte linha no topo:

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

Esse ajuste desativa erros relacionados a funções depreciadas e de código estrito, evitando a interrupção do funcionamento do sistema sem mexer diretamente no core do PHP.


2. Comentando Funções Redefinidas

Uma solução mais específica para os conflitos de funções, como mb_ord() e mb_chr(), envolve editar o arquivo diff_match_patch.php no diretório /var/www/html/editor/lib/. Se você encontrar erros dizendo que essas funções já existem, é possível comentá-las diretamente no código:

/*
function mb_ord($v) {
        $k = mb_convert_encoding($v, 'UCS-2LE', 'UTF-8');
        $k1 = ord(substr($k, 0, 1));
        $k2 = ord(substr($k, 1, 1));
        return $k2 * 256 + $k1;
}
function mb_chr($num){
        return mb_convert_encoding('&#'.intval($num).';', 'UTF-8', 'HTML-ENTITIES');
}
*/

Ao comentar essas funções, você remove o conflito, já que elas já fazem parte do PHP a partir da versão 7.2, como indicado nas mensagens de erro do arquivo error.log.


3. Verificando a Existência das Funções Antes de Redefini-las

Uma abordagem mais elegante e compatível com futuras atualizações seria modificar o código para verificar se as funções já existem antes de tentar redefini-las. No mesmo arquivo diff_match_patch.php, você pode ajustar da seguinte forma:

if (!function_exists('mb_ord')) {
    function mb_ord($v) {
        $k = mb_convert_encoding($v, 'UCS-2LE', 'UTF-8');
        $k1 = ord(substr($k, 0, 1));
        $k2 = ord(substr($k, 1, 1));
        return $k2 * 256 + $k1;
    }
}

if (!function_exists('mb_chr')) {
    function mb_chr($num){
        return mb_convert_encoding('&#'.intval($num).';', 'UTF-8', 'HTML-ENTITIES');
    }
}

Com esse ajuste, o código verifica se a função já existe e só a declara se necessário, prevenindo conflitos em futuras versões do PHP ou em ambientes com múltiplas dependências.


4. Ajuste na Sessão do Filemanager (A Cereja do Bolo!)

Por fim, um problema comum no Filemanager do Codiad está relacionado à variável de sessão que controla o caminho do projeto. Para resolver isso, você precisa fazer uma pequena modificação no arquivo components/filemanager/controller.php na linha 57.

Troque o código:

$Filemanager->project = @$_SESSION['project']['path'];

Por este:

if (isset($_SESSION['project']['path'])) {
    $Filemanager->project = @$_SESSION['project']['path'];
}

Esse pequeno ajuste evita erros quando o caminho do projeto não é corretamente recuperado da sessão, assegurando que o Codiad carregue os projetos corretamente no Filemanager.


Considerações Finais

A compatibilidade do Codiad com versões mais recentes do PHP pode parecer problemática à primeira vista, mas com pequenos ajustes você pode manter seu ambiente de desenvolvimento funcionando perfeitamente. As soluções mostradas aqui, desde a supressão de erros até ajustes mais robustos, permitem que você use o Codiad em sua forma atualizada, sem grandes modificações no core do PHP.

Rolar para cima