【问题标题】:Laravel 5 with Xdebug always throws "The payload is invalid."带有 Xdebug 的 Laravel 5 总是抛出“有效负载无效”。
【发布时间】:2017-11-17 16:35:24
【问题描述】:

我在 VScode 上配置了 Xdebug 来调试我的 laravel 应用程序。但是,当我开始调试时,laravel 总是抛出这个错误:Exception has occurred. Illuminate\Contracts\Encryption\DecryptException: The payload is invalid.

我已经尝试运行php artisan optimize

这里有人已经遇到过这个问题吗?我正在使用 Laravel 5.5

附言。我试图调试一个 Laravel 4 应用程序。它没有任何问题。所以,我认为这可能是 Laravel 5 特有的。

【问题讨论】:

  • 尝试清除所有 cookie。除非您专门在网站代码中进行加密/解密,否则听起来您的 Laravel cookie 之一是使用错误的 APP_KEY 值加密的。
  • 这里有同样的问题。我已经清除了我的 cookie,运行 php artisan optimize,并继续得到同样的错误。也重启了盒子。调试在 PHPStorm 中工作,所以我会冒险说它在我的 vagrant / homestead 盒子中配置正确。真的很奇怪,当我弄清楚时,我知道这将是一件愚蠢的事情。你在使用 Xdebug helper 之类的浏览器插件吗?

标签: php laravel xdebug


【解决方案1】:

默认情况下,Laravel 将加密并随后解密请求中的所有 cookie。

当使用 Xdebug 从浏览器调试您的应用程序时,会设置一个名为“XDEBUG_SESSION”的 cookie。由于 Laravel 框架没有设置这个 cookie,因此没有加密,当框架自动检测并尝试解密 cookie 时会抛出错误。

正确的解决方案是将“XDEBUG_SESSION”cookie 添加到 App\Http\Middleware\EncryptCookies 中间件的异常数组中。

/**
 * The names of the cookies that should not be encrypted.
 *
 * @var array
 */
protected $except = [
    'XDEBUG_SESSION'
];

【讨论】:

  • 是的......这实际上是有道理的,但是添加了这个异常并且问题仍然存在......
  • @DvdEnde 哈哈,谢谢你的赞赏。希望我为您节省了一些时间!
  • 不要忘记像@ceejayoz 提到的那样清除您的 cookie。
  • phpsessid 是我卡住的 cookie。
  • 使用 vscode 时,cookie 设置为VSCODE。如果这仍然不适合您,请将其添加到您的数组中。其他流行的 IDE 密钥也是如此。
【解决方案2】:

如果答案不起作用,请尝试将其添加到 launch.json

{
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9001,
        "ignore": [
            "**/vendor/**/*.php"
        ]
    },

更多信息https://stackoverflow.com/a/49795318/1998033

【讨论】:

  • 感谢您的提示!
  • 这对我有用,而接受的答案却没有。
  • 为我工作!谢谢!
  • 使用 Laradock 为我工作。谢谢!
【解决方案3】:

@ceejayoz 评论解决了这个问题。我运行 php artisan otimize,并清除浏览器上的所有 cookie,它开始正常工作。

【讨论】:

    【解决方案4】:

    就我而言,我还必须关闭 ExceptionsEverything 以免被报告,否则问题仍然存在。

    【讨论】:

    • 这当然是一个 hack,但它至少帮助我达到了我知道代码中的断点会被命中的地步。
    【解决方案5】:

    这是我的解决方案。我正在使用 VsCode 并且文件配置 xdebug (launch.json) 必须与工作区匹配

    {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log":true,
            "pathMappings": {
    
               // "serverSourceRoot": "/var/www/html",
                //"localSourceRoot": "${workspaceRoot}"
                "/var/www/html":"/Users/{username}/sites/{mysitefolder}"
    
            },
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
    

    }

    【讨论】:

      【解决方案6】:

      暂时注释掉了app/Http/Kernel的web middlewareGroups里面的\App\Http\Middleware\EncryptCookies::class。解决了我的问题。确实需要记住把它转回来。任何人有更好的解决方案吗?我尝试了上述方法,不幸的是没有人为我工作。

      【讨论】:

        猜你喜欢
        • 2018-02-22
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多