Saj*_*oje 51 laravel-8 laravel-9
\n\n无需安装、更新或删除\n生成优化的自动加载文件\n位于 C:/wamp64/www/vuexylaravel/app\\Helpers\\helpers.php 的类 App\\Helpers\\Helper 不符合\npsr-4 自动加载标准。跳过。\n> Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\n> @php artisan package:discover --ansi
\n
Error \n\n Undefined constant Illuminate\\Http\\Request::HEADER_X_FORWARDED_ALL\n at C:\\wamp64\\www\\vuexylaravel\\vendor\\fideloper\\proxy\\config\\trustedproxy.php:48\n 44\xe2\x96\x95 * - 'HEADER_X_FORWARDED_AWS_ELB' (If you are using AWS Elastic Load Balancer)\n 45\xe2\x96\x95 *\n 46\xe2\x96\x95 * @link https://symfony.com/doc/current/deployment/proxies.html\n 47\xe2\x96\x95 */\n \xe2\x9e\x9c 48\xe2\x96\x95 'headers' => Illuminate\\Http\\Request::HEADER_X_FORWARDED_ALL,\n 49\xe2\x96\x95\n 50\xe2\x96\x95 ];\n 51\xe2\x96\x95\n\n 1 C:\\wamp64\\www\\vuexylaravel\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\ServiceProvider.php:138\n require()\n\n 2 C:\\wamp64\\www\\vuexylaravel\\vendor\\fideloper\\proxy\\src\\TrustedProxyServiceProvider.php:28\n Illuminate\\Support\\ServiceProvider::mergeConfigFrom("C:\\wamp64\\www\\vuexylaravel\\vendor\\fideloper\\proxy\\config\\trustedproxy.php", "trustedproxy")\nScript @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1\nRun Code Online (Sandbox Code Playgroud)\n
小智 94
上面那位同事的回答,原则上是对的。只是他忘了提到,在文件中进行所有更改后,您需要删除该包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 Middleware为use Illuminate\Http\Middleware\TrustProxies as Middleware.接下来,在 中
app/Http/Middleware/TrustProxies.php,您应该更新$headers属性定义:Run Code Online (Sandbox Code Playgroud)// 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
Saj*_*oje 43
如果您通过将现有应用程序代码导入全新的 Laravel 9 应用程序框架来将 Laravel 8 项目升级到 Laravel 9,则可能需要更新应用程序的“可信代理”中间件。
在您的app/Http/Middleware/TrustProxies.php文件中,更新:
use Fideloper\Proxy\TrustProxies as Middleware
到
use Illuminate\Http\Middleware\TrustProxies as Middleware
接下来,在 中app/Http/Middleware/TrustProxies.php,您应该更新$headers属性定义:
// 前...
protected $headers = Request::HEADER_X_FORWARDED_ALL;
Run Code Online (Sandbox Code Playgroud)
// 后...
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;
Run Code Online (Sandbox Code Playgroud)
然后运行composer update
确保您使用的是 PHP 8.0
如果上述答案对您不起作用并且您遇到相同的错误,请再执行一行以从composer.json 中删除 fideloper/proxy。
// 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;
Run Code Online (Sandbox Code Playgroud)
这将从composer.json中删除代理,并且异常将消失。
composer remove fideloper/proxy
Run Code Online (Sandbox Code Playgroud)
laravel 9 升级指南中正确提到了这一点。 https://laravel.com/docs/9.x/upgrade#the-assert-deleted-method
| 归档时间: |
|
| 查看次数: |
32864 次 |
| 最近记录: |