9

无需安装、更新或删除生成优化的自动加载文件位于 C:/wamp64/www/vuexylaravel/app\Helpers\helpers.php 的类 App\Helpers\Helper 不符合 psr-4 自动加载标准。跳过。> Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi

   Error 

  Undefined constant Illuminate\Http\Request::HEADER_X_FORWARDED_ALL
  at C:\wamp64\www\vuexylaravel\vendor\fideloper\proxy\config\trustedproxy.php:48
     44▕      * - 'HEADER_X_FORWARDED_AWS_ELB' (If you are using AWS Elastic Load Balancer)
     45▕      *
     46▕      * @link https://symfony.com/doc/current/deployment/proxies.html
     47▕      */
  ➜  48▕     'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL,
     49▕
     50▕ ];
     51▕

  1   C:\wamp64\www\vuexylaravel\vendor\laravel\framework\src\Illuminate\Support\ServiceProvider.php:138
      require()

  2   C:\wamp64\www\vuexylaravel\vendor\fideloper\proxy\src\TrustedProxyServiceProvider.php:28
      Illuminate\Support\ServiceProvider::mergeConfigFrom("C:\wamp64\www\vuexylaravel\vendor\fideloper\proxy\config\trustedproxy.php", "trustedproxy")
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
4

2 回答 2

22

原则上,回答上述问题的同事是对的。只有他忘了提到,在文件中进行了所有更改之后,您需要删除该包fideloper/proxy

https://laravel.com/docs/9.x/upgrade

受信任的代理

影响的可能性:低

如果您通过将现有应用程序代码导入全新的 Laravel 9 应用程序框架来将 Laravel 8 项目升级到 Laravel 9,您可能需要更新应用程序的“可信代理”中间件。

在您的app/Http/Middleware/TrustProxies.php文件中,更新use Fideloper\Proxy\TrustProxies as Middlewareuse Illuminate\Http\Middleware\TrustProxies as Middleware.

接下来,在 内app/Http/Middleware/TrustProxies.php,您应该更新$headers属性定义:

// Before...
protected $headers = Request::HEADER_X_FORWARDED_ALL;

// After...
protected $headers =
   Request::HEADER_X_FORWARDED_FOR |
   Request::HEADER_X_FORWARDED_HOST |
   Request::HEADER_X_FORWARDED_PORT |
   Request::HEADER_X_FORWARDED_PROTO |
   Request::HEADER_X_FORWARDED_AWS_ELB;

最后,您可以fideloper/proxy从应用程序中删除 Composer 依赖项

composer remove fideloper/proxy

于 2022-02-14T19:39:00.793 回答
1

如果您通过将现有应用程序代码导入全新的 Laravel 9 应用程序框架来将 Laravel 8 项目升级到 Laravel 9,您可能需要更新应用程序的“可信代理”中间件。

在您的app/Http/Middleware/ TrustProxies.php文件中,将 use Fideloper\Proxy\TrustProxies as Middleware更新为使用 Illuminate\Http\Middleware\TrustProxies as Middleware

接下来,在app/Http/Middleware/TrustProxies.php中,您应该更新 $headers 属性定义:

// 前...

受保护的 $headers = Request::HEADER_X_FORWARDED_ALL;

// 后...

protected $headers =
    Request::HEADER_X_FORWARDED_FOR |
    Request::HEADER_X_FORWARDED_HOST |
    Request::HEADER_X_FORWARDED_PORT |
    Request::HEADER_X_FORWARDED_PROTO |
    Request::HEADER_X_FORWARDED_AWS_ELB;

然后运行composer update

确保您使用的是 PHP 8.0

于 2022-02-13T17:35:41.133 回答