Can't using Visual Code to debug in Laravel pr

2020-03-20 05:51发布

问题:

I was config success to debug in PHP on VSCode.

My problem is when I run the project it always errors at the function:

protected function getJsonPayload($payload)
{
    $payload = json_decode(base64_decode($payload), true);

    // If the payload is not valid JSON or does not have the proper keys set we will
    // assume it is invalid and bail out of the routine since we will not be able
    // to decrypt the given value. We'll also check the MAC for this encryption.
    if (! $this->validPayload($payload)) {
        throw new DecryptException('The payload is invalid.');
    }

    if (! $this->validMac($payload)) {
        throw new DecryptException('The MAC is invalid.');
    }

    return $payload;
}

... from file: /srv/http/laravelproject/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php

I can't debug to breakpoint I was set.

Gif screen record: http://i.imgur.com/6pNkoHe.gif

回答1:

Your question seems to be a related post to this, which provides a pretty good answer. Also, my question to you is why are you using DecryptException? Laravel has bcrypt(for password hashing) and csrf tokens (form data encryption) that are much easier to use.

For those looking for a quick answer without reading the comments:

Run these commands in Eloquent:

php artisan optimize -> php artisan cache:clear -> composer dump-autoload



回答2:

Had the same issue when using Docker with VsCode and xDebug in Laravel.

For anyone interested in a different approach (since Laravel 5.6 there is no optimize command anymore)

Just add the ignore section to your launch.json config.

{
   "name": "Listen for XDebug",
   "type": "php",
   "request": "launch",
   "port": 9000,
   "pathMappings": {
       "/var/www/html": "${workspaceRoot}",
    },
    // add this
    "ignore": [
        "**/vendor/**/*.php"
    ]
},

Solved the issue for me.

Got this from Docker Github Repo



回答3:

I had the same problem and the accepted answer solved it.

However, if anyone simply wants to dismiss the problem temporarily, rather than getting to the root of it, you can uncheck the "Everything" checkbox at the bottom of the Breakpoints panel of the debug pane, and that will skip over the error.



回答4:

On Laravel 5.7, it works for me:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9000,
        "ignore": [
            "**/vendor/**/*.php"
        ]
    },
    {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9000,
        "runtimeExecutable": "/usr/bin/php"
    }
]
}