将 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;
我收到这个错误。
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;