Ошибка: при обновлении laravel 8 до 9. Скрипт @php artisan package:discover --ansi обрабатывает событие post-autoload-dump, возвращенное с кодом ошибки 1
Нечего устанавливать, обновлять или удалять Создание оптимизированных файлов автозагрузки Класс App\Helpers\Helper, расположенный в C:/wamp64/www/vuexylaravel/app\Helpers\helpers.php, не соответствует стандарту автозагрузки 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
8 ответов
Коллега с ответом выше в принципе прав. Только забыл упомянуть, что после всех изменений в файле нужно удалить пакет:
https://laravel.com/docs/9.x/обновление
Доверенные прокси
Вероятность воздействия: низкая
Если вы обновляете свой проект Laravel 8 до Laravel 9, импортируя существующий код приложения в совершенно новый скелет приложения Laravel 9, вам может потребоваться обновить промежуточное программное обеспечение «доверенного прокси» вашего приложения.
В вашем файле обновите
use Fideloper\Proxy\TrustProxies as Middleware
кuse 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
Если вы обновляете свой проект Laravel 8 до Laravel 9, импортируя существующий код приложения в совершенно новый скелет приложения Laravel 9, вам может потребоваться обновить промежуточное программное обеспечение «доверенного прокси» вашего приложения.
В вашем файле app/Http/Middleware/TrustProxies.php обновите использование Fideloper\Proxy\TrustProxies в качестве промежуточного программного обеспечения, чтобы использовать Illuminate\Http\Middleware\TrustProxies в качестве промежуточного программного обеспечения .
Затем в app/Http/Middleware/TrustProxies.php вы должны обновить определение свойства $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
Если приведенный выше ответ не работает для вас, и вы получаете ту же ошибку, выполните еще одну строку для удаления fideloper/proxy из composer.json.
// 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;
Это удалит прокси из composer.json, и исключение исчезнет.
composer remove fideloper/proxy
это правильно упомянуто в руководстве по обновлению laravel 9. https://laravel.com/docs/9.x/upgrade#the-assert-deleted-method
Если вы обновляете свой проект Laravel 8 до Laravel 9, импортируя существующий код приложения в совершенно новый скелет приложения Laravel 9, вам может потребоваться обновить промежуточное программное обеспечение «доверенного прокси» вашего приложения.
В вашем файле app/Http/Middleware/TrustProxies.php обновите использование Fideloper\Proxy\TrustProxies в качестве промежуточного программного обеспечения, чтобы использовать Illuminate\Http\Middleware\TrustProxies в качестве промежуточного программного обеспечения.
Затем в 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:
композитор удалить fideloper/proxy
Если вы обновляете свой проект Laravel 8 до Laravel 9, импортируя существующий код приложения в совершенно новый скелет приложения Laravel 9, я попробовал это решение ниже.
а) Я исправил это, удалив «config/trustedproxy.php». У меня не было промежуточного программного обеспечения TrustProxies в каталоге app\Http\Middleware на моей стороне.
В основном все вышеперечисленные ответы говорят одно и то же, документы Laravel верны, просто следуйте инструкциям.
Но если у вас все еще есть та же ошибка (как и у меня), удалите файл «config/trustedproxy.php». Это исправляет ошибку.
Две вещи, которые я сделал после выполнения документа по обновлению laravel, который сработал для меня:
- Вручную зайдите в composer.json и удалите fideloper/proxy
Запустите обновление композитора. Если вы все еще получаете вопрос. Следуйте дальше:
- Проверьте, присутствует ли этот файл TrustProxies.php , расположенный по адресу vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php, если нет, вы можете скопировать из старого.
вам нужно удалить файл «config/trustedproxy.php»
После запуска обновления композитора