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。
デフォルトでは、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'
];
答えが機能しない場合は、launch.jsonに追加してみてください
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9001,
"ignore": [
"**/vendor/**/*.php"
]
},
@ceejayozコメントは問題を解決しました。私はphp artisan otimizeを実行し、ブラウザーですべてのcookieをクリアすると、正しく機能し始めました。
私に関する限り、私はExceptionsとEverythingが報告されないようにする必要もありました。そうしないと、問題は解決しませんでした。
これは私の解決策です。私は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
}
]
}
App/Http/Kernelのweb middlewareGroups内にある\ App\Http\Middleware\EncryptCookies :: classを一時的にコメント化しました。これで私の問題を解決しました。ただし、それを元に戻すことを覚えておく必要があります。誰かからのより良い解決策はありますか?上記の方法を試しましたが、残念ながらうまくいきませんでした。