[ Laravel ] Erro Undefined class constant HEADER_CLIENT_IP ao atualizar da versão 5.5 para 5.6

By on

Recentemente, fui atualizar alguns projetos com o Laravel que estavam na versão 5.5 para a versão 5.6 executando “composer update” e me deparei com o erro do título deste post, por isso vou mostrar como resolvê-lo.

O que acontece é que o Laravel possui um Middleware para proxies confiáveis e utiliza um pacote chamado “fideloper/proxy” e esse garoto mudou a forma como são configurados os cabeçalhos.

Na versão 5.5 o Middleware era definido da seguinte forma:

...
namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
   protected $proxies;
   protected $headers = [
        Request::HEADER_FORWARDED => 'FORWARDED',
        Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
        Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
        Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
        Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
    ];
}

E utiliza a versão “~3.3” do pacote “fideloper/proxy“.

No entanto, na versão 5.6 do Laravel, este Middleware está definido diferente, para se adaptar às novas definições do pacote “fideloper/proxy” na versão “~4.0“, ficando desta forma:

...
namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
    protected $proxies;
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

Bom, então a solução é basicamente modificar o conteúdo do arquivo app\Http\Middleware\TrustedProxies.php pelo código acima e no composer.json modificar:

...
"require": {
    "php": ">=7.0.0",
    "fideloper/proxy": "~3.3",
    "laravel/framework": "5.5.*",
    "laravel/tinker": "~1.0"
},

por:

...
"require": {
    "php": ">=7.1.3",
    "fideloper/proxy": "~4.0",
    "laravel/framework": "5.6.*",
    "laravel/tinker": "~1.0"
},

Feito isso é só rodar o “composer update” novamente e tudo vai estar funcionando novamente.

É isso ai!

Espero ter ajudado.

Abraço do Giba!

Be the first to write a comment.

Leave a Reply