将 laravel 从 5.5 更新到 5.7 时出错(未定义 class 常量 'HEADER_CLIENT_IP')

Getting error while updating laravel from 5.5 to 5.7 (Undefined class constant 'HEADER_CLIENT_IP')

我收到这个错误。

Undefined class constant 'HEADER_CLIENT_IP' Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

我改了

app\Http\Middleware\TrustedProxies.php by:

    <?php

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

这是我的 .composerjson 文件

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.7.*",
        "laravel/tinker": "~1.0",
        "tymon/jwt-auth": "^0.5.12"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0",
        "symfony/thanks": "^1.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\Foundation\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    } }

我仍在处理同样的错误。你们能弄清楚问题出在哪里吗?

您是否尝试更新作曲家

composer update

并转储自动加载?

composer dump-autoload

在composer.json 更改 fideloper/proxy

来自

"fideloper/proxy": "~3.3",

"fideloper/proxy": "^4.0",

之后运行

composer update

1) 将您的 composer.json 更改为关注

"php": ">=7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.7.*",
"laravel/tinker": "~1.0",

2) 将您的 App\Http\Middleware\TrustProxies.php 更改为关注

<?php

namespace App\Http\Middleware;

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

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array|string
     */
    protected $proxies;
    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

3) 从 config 目录中删除名称为 trustedproxy.php 的文件

4) 运行 从你的应用程序目录进入控制台的命令如下

composer update

5) 这一步不是必需的,但它会清除所有缓存和自动加载文件

php artisan clear-compiled

composer dump-autoload

php artisan cache:clear

php artisan config:clear

php artisan view:clear

如果你们在更新到 laravel 9.0 时遇到此错误,请从 composer.json

中删除以下代码行
"fideloper/proxy": "^4.4.1",

和运行终端中的作曲家更新命令

composer update

然后,在文件 app\Http\Middleware\TrustProxies.php file

中将 use Fideloper\Proxy\TrustProxies as Middleware; 更改为 use Illuminate\Http\Middleware\TrustProxies as Middleware;