将 Laravel 5.5 升级到 5.6 错误

Posted

技术标签:

【中文标题】将 Laravel 5.5 升级到 5.6 错误【英文标题】:Upgrading Laravel 5.5 to 5.6 error 【发布时间】:2018-07-13 16:09:08 【问题描述】:

我正在尝试将我的 Laravel 5.5 升级到 5.6. 我已按照 laravel 网站上的说明进行操作,但出现此错误:

Your requirements could not be resolved to an installable set of packages.
    Problem 1
        - The requested package laravel/framework 5.6.* is satisfiable by laravel/framework[5.6.x-dev] but these conflict with your requirements or minimum-stability.

所以,我根据this laracast 讨论的第一个答案更改了我的composer.json 文件并添加了两行:**"minimum-stability": "dev", "prefer-stable": true,**

在我遇到另一个错误之前,一切似乎都运行良好:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 6 updates, 0 removals
  - Updating sebastian/diff (2.0.1 => 3.0.0): Downloading (100%)         
  - Updating phpunit/phpunit-mock-objects (5.0.6 => 6.0.0): Downloading (100%)    - Updating phpunit/php-timer (1.0.9 => 2.0.0): Downloading (100%)         
  - Updating phpunit/php-token-stream (2.0.2 => 3.0.0): Downloading (100%)        - Updating phpunit/php-code-coverage (5.3.0 => 6.0.1): Downloading (100%)       - Updating phpunit/phpunit (6.5.6 => 7.0.0): Downloading (100%)         
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover

In trustedproxy.php line 66:

  Undefined class constant 'HEADER_CLIENT_IP'  


Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

第 66 行的问题是 Illuminate\Http\Request::HEADER_CLIENT_IP => 'X_FORWARDED_FOR',。 我在***上搜索了其他帖子,但仍然没有运气。我尝试的最后一件事是作曲家自我更新和作曲家全局更新,在帖子composer dump-autoload not recognized command中提到了

另外,我不能删除 "minimum-stability": "dev","prefer-stable": true 因为如果我这样做了,我会收到以下错误:

    - Installation request for laravel/framework 5.6.* -> satisfiable by laravel/framework[5.6.x-dev].
- Removal request for laravel/framework == 5.6.9999999.9999999-dev

我已经分别附上了我的 composer.json 文件和trustedproxy.php。任何帮助将不胜感激。


    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "minimum-stability": "dev",
"prefer-stable": true,
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": 
        "php": ">=7.1.3",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "~1.0"
    ,
    "require-dev": 
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~7.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
    

trustedproxy.php (error in line 66--> Illuminate\Http\Request::HEADER_CLIENT_IP => 'X_FORWARDED_FOR',)

<?php

return [

    /*
     * Set trusted proxy IP addresses.
     *
     * Both IPv4 and IPv6 addresses are
     * supported, along with CIDR notation.
     *
     * The "*" character is syntactic sugar
     * within TrustedProxy to trust any proxy
     * that connects directly to your server,
     * a requirement when you cannot know the address
     * of your proxy (e.g. if using Rackspace balancers).
     *
     * The "**" character is syntactic sugar within
     * TrustedProxy to trust not just any proxy that
     * connects directly to your server, but also
     * proxies that connect to those proxies, and all
     * the way back until you reach the original source
     * IP. It will mean that $request->getClientIp()
     * always gets the originating client IP, no matter
     * how many proxies that client's request has
     * subsequently passed through.
     */
    'proxies' => [
        '192.168.1.10',
    ],

    /*
     * Or, to trust all proxies that connect
     * directly to your server, uncomment this:
     */
     # 'proxies' => '*',

    /*
     * Or, to trust ALL proxies, including those that
     * are in a chain of forwarding, uncomment this:
    */
    # 'proxies' => '**',

    /*
     * Default Header Names
     *
     * Change these if the proxy does
     * not send the default header names.
     *
     * Note that headers such as X-Forwarded-For
     * are transformed to HTTP_X_FORWARDED_FOR format.
     *
     * The following are Symfony defaults, found in
     * \Symfony\Component\HttpFoundation\Request::$trustedHeaders
     *
     * You may optionally set headers to 'null' here if you'd like
     * for them to be considered untrusted instead. Ex:
     *
     * Illuminate\Http\Request::HEADER_CLIENT_HOST  => null,
     * 
     * WARNING: If you're using AWS Elastic Load Balancing or Heroku,
     * the FORWARDED and X_FORWARDED_HOST headers should be set to null 
     * as they are currently unsupported there.
     */
    'headers' => [
        (defined('Illuminate\Http\Request::HEADER_FORWARDED') ? Illuminate\Http\Request::HEADER_FORWARDED : 'forwarded') => 'FORWARDED',
        Illuminate\Http\Request::HEADER_CLIENT_IP    => 'X_FORWARDED_FOR',
        Illuminate\Http\Request::HEADER_CLIENT_HOST  => 'X_FORWARDED_HOST',
        Illuminate\Http\Request::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO',
        Illuminate\Http\Request::HEADER_CLIENT_PORT  => 'X_FORWARDED_PORT',
    ]
];

照亮\Http\请求文件:

<?php

namespace Illuminate\Http;

use Closure;
use ArrayAccess;
use RuntimeException;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Illuminate\Support\Traits\Macroable;
use Illuminate\Contracts\Support\Arrayable;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;

class Request extends SymfonyRequest implements Arrayable, ArrayAccess

    use Concerns\InteractsWithContentTypes,
        Concerns\InteractsWithFlashData,
        Concerns\InteractsWithInput,
        Macroable;

    /**
     * The decoded JSON content for the request.
     *
     * @var \Symfony\Component\HttpFoundation\ParameterBag|null
     */
    protected $json;

    /**
     * All of the converted files for the request.
     *
     * @var array
     */
    protected $convertedFiles;

    /**
     * The user resolver callback.
     *
     * @var \Closure
     */
    protected $userResolver;

    /**
     * The route resolver callback.
     *
     * @var \Closure
     */
    protected $routeResolver;

    /**
     * Create a new Illuminate HTTP request from server variables.
     *
     * @return static
     */
    public static function capture()
    
        static::enableHttpMethodParameterOverride();

        return static::createFromBase(SymfonyRequest::createFromGlobals());
    

    /**
     * Return the Request instance.
     *
     * @return $this
     */
    public function instance()
    
        return $this;
    

    /**
     * Get the request method.
     *
     * @return string
     */
    public function method()
    
        return $this->getMethod();
    

    /**
     * Get the root URL for the application.
     *
     * @return string
     */
    public function root()
    
        return rtrim($this->getSchemeAndHttpHost().$this->getBaseUrl(), '/');
    

    /**
     * Get the URL (no query string) for the request.
     *
     * @return string
     */
    public function url()
    
        return rtrim(preg_replace('/\?.*/', '', $this->getUri()), '/');
    

    /**
     * Get the full URL for the request.
     *
     * @return string
     */
    public function fullUrl()
    
        $query = $this->getQueryString();

        $question = $this->getBaseUrl().$this->getPathInfo() == '/' ? '/?' : '?';

        return $query ? $this->url().$question.$query : $this->url();
    

    /**
     * Get the full URL for the request with the added query string parameters.
     *
     * @param  array  $query
     * @return string
     */
    public function fullUrlWithQuery(array $query)
    
        $question = $this->getBaseUrl().$this->getPathInfo() == '/' ? '/?' : '?';

        return count($this->query()) > 0
            ? $this->url().$question.http_build_query(array_merge($this->query(), $query))
            : $this->fullUrl().$question.http_build_query($query);
    

    /**
     * Get the current path info for the request.
     *
     * @return string
     */
    public function path()
    
        $pattern = trim($this->getPathInfo(), '/');

        return $pattern == '' ? '/' : $pattern;
    

    /**
     * Get the current decoded path info for the request.
     *
     * @return string
     */
    public function decodedPath()
    
        return rawurldecode($this->path());
    

    /**
     * Get a segment from the URI (1 based index).
     *
     * @param  int  $index
     * @param  string|null  $default
     * @return string|null
     */
    public function segment($index, $default = null)
    
        return Arr::get($this->segments(), $index - 1, $default);
    

    /**
     * Get all of the segments for the request path.
     *
     * @return array
     */
    public function segments()
    
        $segments = explode('/', $this->decodedPath());

        return array_values(array_filter($segments, function ($value) 
            return $value !== '';
        ));
    

    /**
     * Determine if the current request URI matches a pattern.
     *
     * @param  dynamic  $patterns
     * @return bool
     */
    public function is(...$patterns)
    
        foreach ($patterns as $pattern) 
            if (Str::is($pattern, $this->decodedPath())) 
                return true;
            
        

        return false;
    

    /**
     * Determine if the route name matches a given pattern.
     *
     * @param  dynamic  $patterns
     * @return bool
     */
    public function routeIs(...$patterns)
    
        return $this->route() && $this->route()->named(...$patterns);
    

    /**
     * Determine if the current request URL and query string matches a pattern.
     *
     * @param  dynamic  $patterns
     * @return bool
     */
    public function fullUrlIs(...$patterns)
    
        $url = $this->fullUrl();

        foreach ($patterns as $pattern) 
            if (Str::is($pattern, $url)) 
                return true;
            
        

        return false;
    

    /**
     * Determine if the request is the result of an AJAX call.
     *
     * @return bool
     */
    public function ajax()
    
        return $this->isXmlHttpRequest();
    

    /**
     * Determine if the request is the result of an PJAX call.
     *
     * @return bool
     */
    public function pjax()
    
        return $this->headers->get('X-PJAX') == true;
    

    /**
     * Determine if the request is over HTTPS.
     *
     * @return bool
     */
    public function secure()
    
        return $this->isSecure();
    

    /**
     * Get the client IP address.
     *
     * @return string
     */
    public function ip()
    
        return $this->getClientIp();
    

    /**
     * Get the client IP addresses.
     *
     * @return array
     */
    public function ips()
    
        return $this->getClientIps();
    

    /**
     * Get the client user agent.
     *
     * @return string
     */
    public function userAgent()
    
        return $this->headers->get('User-Agent');
    

    /**
     * Merge new input into the current request's input array.
     *
     * @param  array  $input
     * @return \Illuminate\Http\Request
     */
    public function merge(array $input)
    
        $this->getInputSource()->add($input);

        return $this;
    

    /**
     * Replace the input for the current request.
     *
     * @param  array  $input
     * @return \Illuminate\Http\Request
     */
    public function replace(array $input)
    
        $this->getInputSource()->replace($input);

        return $this;
    

    /**
     * Get the JSON payload for the request.
     *
     * @param  string  $key
     * @param  mixed   $default
     * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed
     */
    public function json($key = null, $default = null)
    
        if (! isset($this->json)) 
            $this->json = new ParameterBag((array) json_decode($this->getContent(), true));
        

        if (is_null($key)) 
            return $this->json;
        

        return data_get($this->json->all(), $key, $default);
    

    /**
     * Get the input source for the request.
     *
     * @return \Symfony\Component\HttpFoundation\ParameterBag
     */
    protected function getInputSource()
    
        if ($this->isJson()) 
            return $this->json();
        

        return $this->getRealMethod() == 'GET' ? $this->query : $this->request;
    

    /**
     * Create an Illuminate request from a Symfony instance.
     *
     * @param  \Symfony\Component\HttpFoundation\Request  $request
     * @return \Illuminate\Http\Request
     */
    public static function createFromBase(SymfonyRequest $request)
    
        if ($request instanceof static) 
            return $request;
        

        $content = $request->content;

        $request = (new static)->duplicate(
            $request->query->all(), $request->request->all(), $request->attributes->all(),
            $request->cookies->all(), $request->files->all(), $request->server->all()
        );

        $request->content = $content;

        $request->request = $request->getInputSource();

        return $request;
    

    /**
     * @inheritdoc
     */
    public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
    
        return parent::duplicate($query, $request, $attributes, $cookies, $this->filterFiles($files), $server);
    

    /**
     * Filter the given array of files, removing any empty values.
     *
     * @param  mixed  $files
     * @return mixed
     */
    protected function filterFiles($files)
    
        if (! $files) 
            return;
        

        foreach ($files as $key => $file) 
            if (is_array($file)) 
                $files[$key] = $this->filterFiles($files[$key]);
            

            if (empty($files[$key])) 
                unset($files[$key]);
            
        

        return $files;
    

    /**
     * Get the session associated with the request.
     *
     * @return \Illuminate\Session\Store
     *
     * @throws \RuntimeException
     */
    public function session()
    
        if (! $this->hasSession()) 
            throw new RuntimeException('Session store not set on request.');
        

        return $this->session;
    

    /**
     * Get the session associated with the request.
     *
     * @return \Illuminate\Session\Store|null
     */
    public function getSession()
    
        return $this->session;
    

    /**
     * Set the session instance on the request.
     *
     * @param  \Illuminate\Contracts\Session\Session  $session
     * @return void
     */
    public function setLaravelSession($session)
    
        $this->session = $session;
    

    /**
     * Get the user making the request.
     *
     * @param  string|null  $guard
     * @return mixed
     */
    public function user($guard = null)
    
        return call_user_func($this->getUserResolver(), $guard);
    

    /**
     * Get the route handling the request.
     *
     * @param  string|null  $param
     *
     * @return \Illuminate\Routing\Route|object|string
     */
    public function route($param = null)
    
        $route = call_user_func($this->getRouteResolver());

        if (is_null($route) || is_null($param)) 
            return $route;
        

        return $route->parameter($param);
    

    /**
     * Get a unique fingerprint for the request / route / IP address.
     *
     * @return string
     *
     * @throws \RuntimeException
     */
    public function fingerprint()
    
        if (! $route = $this->route()) 
            throw new RuntimeException('Unable to generate fingerprint. Route unavailable.');
        

        return sha1(implode('|', array_merge(
            $route->methods(), [$route->getDomain(), $route->uri(), $this->ip()]
        )));
    

    /**
     * Set the JSON payload for the request.
     *
     * @param  \Symfony\Component\HttpFoundation\ParameterBag  $json
     * @return $this
     */
    public function setJson($json)
    
        $this->json = $json;

        return $this;
    

    /**
     * Get the user resolver callback.
     *
     * @return \Closure
     */
    public function getUserResolver()
    
        return $this->userResolver ?: function () 
            //
        ;
    

    /**
     * Set the user resolver callback.
     *
     * @param  \Closure  $callback
     * @return $this
     */
    public function setUserResolver(Closure $callback)
    
        $this->userResolver = $callback;

        return $this;
    

    /**
     * Get the route resolver callback.
     *
     * @return \Closure
     */
    public function getRouteResolver()
    
        return $this->routeResolver ?: function () 
            //
        ;
    

    /**
     * Set the route resolver callback.
     *
     * @param  \Closure  $callback
     * @return $this
     */
    public function setRouteResolver(Closure $callback)
    
        $this->routeResolver = $callback;

        return $this;
    

    /**
     * Get all of the input and files for the request.
     *
     * @return array
     */
    public function toArray()
    
        return $this->all();
    

    /**
     * Determine if the given offset exists.
     *
     * @param  string  $offset
     * @return bool
     */
    public function offsetExists($offset)
    
        return array_key_exists(
            $offset, $this->all() + $this->route()->parameters()
        );
    

    /**
     * Get the value at the given offset.
     *
     * @param  string  $offset
     * @return mixed
     */
    public function offsetGet($offset)
    
        return $this->__get($offset);
    

    /**
     * Set the value at the given offset.
     *
     * @param  string  $offset
     * @param  mixed  $value
     * @return void
     */
    public function offsetSet($offset, $value)
    
        $this->getInputSource()->set($offset, $value);
    

    /**
     * Remove the value at the given offset.
     *
     * @param  string  $offset
     * @return void
     */
    public function offsetUnset($offset)
    
        $this->getInputSource()->remove($offset);
    

    /**
     * Check if an input element is set on the request.
     *
     * @param  string  $key
     * @return bool
     */
    public function __isset($key)
    
        return ! is_null($this->__get($key));
    

    /**
     * Get an input element from the request.
     *
     * @param  string  $key
     * @return mixed
     */
    public function __get($key)
    
        if (array_key_exists($key, $this->all())) 
            return data_get($this->all(), $key);
        

        return $this->route($key);
    

谢谢

【问题讨论】:

我确实做到了,但它不存在。我不想添加或更改任何东西,因为我害怕我会破坏某些东西。 这可能有助于将 laravel 5.5 更新到 5.7 或 5.8 https://***.com/a/56556264/8486565 【参考方案1】:

我做到了,效果很好。

1.作曲家.json:

发件人:

"require": 
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    ,

收件人:

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

2。将 app\Http\Middleware\TrustedProxies.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
     */
    protected $proxies;

    /**
     * The headers that should be used to detect proxies.
     *
     * @var string
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;

3.作曲家更新

【讨论】:

"fideloper/proxy": "~4.0", 成功了。在升级指南laravel.com/docs/5.6/upgrade 中找不到它 - 可以在文档中找到其余部分。谢谢! "fideloper/proxy": "~4.0" 在第一行提到@Updating Dependencies @Robert 可能是后来添加的,只是说:) 我必须做“4.0”而不是“~4.0”否则作曲家实际上并没有更新它。 Declaration of Illuminate\Support\Carbon::__set_state(array $array) should be compatible with Carbon\Carbon::__set_state($state) 的任何解决方案?【参考方案2】:

Laravel 的 Request 对象扩展了 Symfony 的 Request 对象。 Laravel 5.5 依赖于具有该常数的 Symfony 3。 Laravel 5.6 依赖于 Symfony 4,它没有那个常量。

根据您的可信代理配置,您似乎正在使用 Laravel “外部”的可信代理包。 Laravel 在 5.5 的框架内引入了可信代理包,并创建了一个专用的\App\Http\Middleware\TrustProxies 中间件供你使用。

我建议转而使用中间件并按照Laravel documentation 中的说明进行配置。这将有助于防止将来出现此类兼容性问题。

进行切换:

    app/Http/Kernel.php 中,如果\Fideloper\Proxy\TrustProxies::class 在您的$middleware 数组中,请将其删除。如果\App\Http\Middleware\TrustProxies::class 不在您的$middleware 数组中,请添加它。

    打开您的 app/Http/Middleware/TrustProxies.php 文件并使用您的代理进行更新。

    删除您的 config/trustedproxy.php 文件。

    providers 数组中的config/app.php 中删除Fideloper\Proxy\TrustedProxyServiceProvider::class

    更新您的 composer.json 文件以使用“fideloper/proxy”:“~4.0”。运行composer update fideloper/proxy更新包。

【讨论】:

还有这个use Fideloper\Proxy\TrustProxies as Middleware; Laravel 5.6 请使用标签 4.0+:composer require fideloper/proxy:~4.0proxy@4【参考方案3】:

我已经从 5.5 更新到 5.6

composer.json

"minimum-stability":"dev",
"prefer-stable": true,

这将安装最新的 Laravel 包,然后TrustedProxies 会出现问题。

为 Laravel 5.6 安装最新的代理版本。

请为 Laravel 5.6 使用标签 4.0+:

composer require fideloper/proxy:~4.0

More details

【讨论】:

如果我要从 composer.json 中删除这两行,我应该如何继续?当我尝试在没有它们的情况下更新到 5.6 时,我的帖子中出现了第一个错误 您需要将这两行添加到composer.json中,我尝试不使用这些行,但它不起作用。 "minimum-stability":"dev" 会将大部分软件包更新为不稳定版本,但是这个 "prefer-stable":true 将下载稳定版本,在我的情况下,除了 laravel、黄昏和护照,所有软件包都是稳定的,我得到了 latavel 和其他两个的开发版本.【参考方案4】:

第一次安装 Laravel 5.6 我也遇到了这个错误。 只需按照以下几个步骤即可修复它:

确保您的文件composer.json 要求具有: “要求”: "php": "^7.1.3", “fideloper/代理”:“^4.0”, , 然后尝试composer update 以确保您的作曲家是最新的 最终运行:composer require fideloper/proxy:~4.0 完成!

【讨论】:

【参考方案5】:

对于尝试直接从 laravel 5.5 升级到 5.7 并遇到此问题的任何人,请从 app-&gt;config-&gt;trustedproxy.php 中删除trustedproxy.php 文件。 希望对某人有所帮助。

【讨论】:

我只想说非常感谢你!!!我似乎无法摆脱错误。 很高兴它对您有所帮助。【参考方案6】:

只需要更改 composer.json 文件中的 fideloper/proxy:-

你的 composer.json 文件现在:-

"fideloper/proxy": "~3.3",

把它改成 ^4.0 这样的东西:-

"fideloper/proxy": "^4.0",

之后你需要运行更新作曲家就可以了。

composer update

【讨论】:

【参考方案7】:

您的问题来自您对库 TrustedProxy 的使用。

它使用 Symfony 的 HEADER_CLIENT_IP 常量,该常量在 Symfony 3.3 中弃用,并在 Symfony 4.0 中完全删除。

由于 Laravel 5.6 已更新为使用 Symfony 4 组件,这将不再有效。

解决方法是do what patricus suggested,使用 Laravel 的 TrustProxies 中间件。

【讨论】:

丹尼尔,我该如何解决?我可以删除它们吗?【参考方案8】:

我做了以下事情并让我的项目在 Laravel 5.6-dev 上运行:

关注了什么patricus suggested 将 fideloper/proxy 更改为“~4.0”,并在我的 composer.json 文件末尾添加了"minimum-stability": "dev", "prefer-stable": true

【讨论】:

【参考方案9】:

将 app\Http\Middleware\TrustedProxies.php 替换为:

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

将 config\trustedproxy.php 替换为:

<?php

return [
    'proxies' => null,
    'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL,  
];

【讨论】:

【参考方案10】:

出于某种原因,这里的建议都不适合我。我正在使用 quickadmin 面板和可能与它有关的各种依赖项。

最终奏效的是删除 laravel/dusk,然后自行更新为 "fideloper/proxy": "~4.0",。然后更新 laravel/framework 到 5.6,然后重新安装黄昏。

我不需要: "minimum-stability":"dev", "prefer-stable": true,

也许最近的更新已经解决了这个问题。

【讨论】:

【参考方案11】:

面临同样的问题,并获得了一些解决此问题的指南。不幸的是,这些都没有用,我也没有用。实际上,解决此问题不需要额外的步骤或任务。

只需遵循https://laravel.com/docs/5.6/upgrade 的官方升级指南,然后删除位于config/trustedproxy.phptrustedproxy 配置文件

【讨论】:

【参考方案12】:

在 Laravel 5.7 中遇到了同样的问题。您可以在您的.env.env.dusk.local 中添加TELESCOPE_ENABLED=false :Source

【讨论】:

以上是关于将 Laravel 5.5 升级到 5.6 错误的主要内容,如果未能解决你的问题,请参考以下文章

从5.5作曲家更新到laravel 5.6失败

将 Laravel 5.4 升级到最新版本 (5.7)

从 laravel 5 升级到 laravel 5.5 导致错误参数 1 传递给 App\Exceptions\Handler::report()

如何在 Laravel 框架中降级? (5.6 至 5.5)

MySQL 从 5.5 升级到 5.6,日期空条件失败

从 PHP 5.5 升级到 5.6 后,cURL 文件上传不再起作用