web-dev-qa-db-ja.com

Laravel 5 Xdebugを使用すると、常に「ペイロードが無効です。」がスローされます。

VScodeでXdebugを設定して、laravelアプリケーションをデバッグしました。しかし、デバッグを開始すると、laravelが常にこのエラーをスローします:Exception has occurred. Illuminate\Contracts\Encryption\DecryptException: The payload is invalid.

私はすでに実行しようとしましたphp artisan optimize

ここの誰かがすでにこの問題に直面していますか?私はLaravel 5.5を使用しています

Ps。 Laravel 4アプリケーションをデバッグしようとしました。問題なく動作しました。したがって、Laravel 5。

14
Dyego Nery

デフォルトでは、Laravelは、リクエストのすべてのCookieを暗号化し、その後復号化します。

Xdebugを使用してブラウザからアプリケーションをデバッグすると、「XDEBUG_SESSION」というCookieが設定されます。 LaravelフレームワークによってこのCookieが設定されておらず、したがって暗号化もされていないため、フレームワークが自動的にCookieを検出して復号化しようとすると、エラーがスローされます。

正しい解決策は、App\Http\Middleware\EncryptCookiesミドルウェアの例外配列に「XDEBUG_SESSION」Cookieを追加することです。

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

答えが機能しない場合は、launch.jsonに追加してみてください

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

詳細情報https://stackoverflow.com/a/49795318/19980

7
Vrutin Rathod

@ceejayozコメントは問題を解決しました。私はphp artisan otimizeを実行し、ブラウザーですべてのcookieをクリアすると、正しく機能し始めました。

2
Dyego Nery

私に関する限り、私はExceptionsEverythingが報告されないようにする必要もありました。そうしないと、問題は解決しませんでした。

0
bdebever

これは私の解決策です。私は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
    }
]

}

0
Efrén

App/Http/Kernelのweb middlewareGroups内にある\ App\Http\Middleware\EncryptCookies :: classを一時的にコメント化しました。これで私の問題を解決しました。ただし、それを元に戻すことを覚えておく必要があります。誰かからのより良い解決策はありますか?上記の方法を試しましたが、残念ながらうまくいきませんでした。

0
Homer