【问题标题】:Can't using Visual Code to debug in Laravel project无法在 Laravel 项目中使用 Visual Code 进行调试
【发布时间】:2017-11-23 23:35:02
【问题描述】:

我在 VSCode 上的 PHP 中调试成功。

我的问题是当我运行项目时,它总是在函数处出错:

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

...来自文件:/srv/http/laravelproject/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php

我无法调试到我设置的断点。

gif录屏:http://i.imgur.com/6pNkoHe.gif

【问题讨论】:

  • 你在哪里调试?码头工人?流浪汉?想要吗?
  • @TzookBarNoy 我在 Laravel 项目中的控制器上调试了一个函数。我不使用 Docket 或 Vagrant。

标签: php laravel debugging visual-studio-code


【解决方案1】:

在 Laravel 中使用带有 VsCode 和 xDebug 的 Docker 时遇到了同样的问题。

对于任何对不同方法感兴趣的人(自 Laravel 5.6 起,不再有 optimize 命令)

只需将ignore 部分添加到您的launch.json 配置中。

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

为我解决了这个问题。

Docker Github Repo得到这个

【讨论】:

  • 完美。谢谢!
  • 亲爱的上帝,我花了好几个小时才找到。
【解决方案2】:

您的问题似乎是与this 的相关帖子,它提供了一个很好的答案。另外,我问你的问题是你为什么使用DecryptException? Laravel 有bcrypt(用于密码哈希)和csrf tokens(表单数据加密),它们更容易使用。

对于那些在不阅读 cmets 的情况下寻求快速答案的人:

在 Eloquent 中运行这些命令:

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

【讨论】:

  • 你可以看到这个gif。i.imgur.com/6pNkoHe.gif。我不使用DecryptException。我认为我在登录时与 cookie 的错误关系。您的链接仅提供设置调试。我知道如何在 VSCode 中调试并设置成功。
  • 您的图片无法加载 - 显示为 404
  • 这可能有点远,但请听我说完。我之前在使用 Voyager 包时遇到过问题。首先,尝试运行php artisan optimize 看看会发生什么。然后清除测试浏览器中的缓存和cookies。
  • 那么,异常是在 VSCode 中引发的,而不是在浏览网站时引发的?我觉得这很奇怪。
  • 随时!!哇,我几乎认为这行不通。但是,是的,如果有疑问,请使用optimize。它解决了很多的问题。
【解决方案3】:

我遇到了同样的问题,接受的答案解决了它。

但是,如果有人只是想暂时解决问题,而不是找到问题的根源,您可以取消选中调试窗格的断点面板底部的“所有内容”复选框,这将跳过错误。

【讨论】:

  • 这也是一个有用的提示。已投票。
  • 考虑到我项目的局限性,这是唯一对我有帮助的事情。谢谢你,我已经开始运行了!
【解决方案4】:

在 Laravel 5.7 上,它适用于我:

{
"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"
    }
]
}

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2016-11-28
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多