"ReflectionException: Class config does not exist" 更新到 Laravel 5.7

"ReflectionException: Class config does not exist" on update to Laravel 5.7

更新到 Laravel 5.7 后,我在推送到我的测试服务器时突然遇到这个错误:"ReflectionException: Class config does not exist"。

我在我的开发环境中没有遇到它。

我采取了此处概述的步骤:

我的 .env 文件中没有任何空格 -- 我已经逐行查看了 4 次。

我还没有使用 Dusk 做任何事情 --(旁注可能对像我这样跌跌撞撞的人有帮助:起初我 运行 遇到 Dusk 告诉我不要使用 Dusk 的问题prod。事实证明那是因为我的部署脚本没有移动我的 .env 文件——如果不存在 .env 文件它会抛出同样的错误。)

我是 运行:

Composer.json:

    "require": {
        "php": ">=7.1.3",
        "laravel/framework": "5.7.*",
        "fideloper/proxy": "^4.0",
        "cartalyst/sentinel": "2.0.*",
        "guzzlehttp/guzzle": "~6.0",
        "imgix/imgix-php": "^1.1",
        "Jasekz/Laradrop":"1.*",
        "browner12/helpers": "^1.0",
        "mtdowling/jmespath.php":"2.4",
        "davejamesmiller/laravel-breadcrumbs": "5.*",
        "league/flysystem-aws-s3-v3": "~1.0",
        "laravel/passport": "~7.0",
        "laravel/tinker": "~1.0",
        "facebook/webdriver": "^1.6",
        "laravelcollective/html": "^5.7"
    },"require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~7.3",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*",
        "reliese/laravel": "^0.0.13",
        "laravel/dusk": "^4.0",
        "filp/whoops": "~2.0"
    },

我试过 composer dump-autoload 没用。我试图切换 phpunit 版本但没有成功。

经过三天的绞尽脑汁,我发现了我的愚蠢错误,并认为我应该分享。

我的情况是这样的:

  1. 我之前已将供应商文件夹提交到我的存储库,因为我在没有构建步骤的情况下从我的存储库进行部署。
  2. 我现在设置了一个部署管道,当我提交给特定的 b运行 时,它会编译和部署我的代码。
  3. 我有 composer update 作为该管道中的命令,因此决定是时候遵循最佳实践并将 /vendor 添加到我的 .gitignore 文件中了。
  4. 在将 /vendor 文件夹添加到我的 .gitignore 文件之前,我没有从我的存储库中删除它。
  5. 这导致 /vendor 文件夹被锁定在我的存储库中,并没有从中删除。

我采取了各种行动试图弄清楚发生了什么,但没有成功。我尝试将服务器上的版本下载到我的本地计算机上,然后 运行 遇到了同样的问题。


TL;DR:

终于偶然发现一个东西,建议干脆删除/vendor文件夹,然后运行composer install刷新整个vendor 文件夹。 无论如何,这对我有用。似乎这个特定问题的错误消息不是很有指导意义,但这可能是因为没有人预料到有人会愚蠢到完全无视 "don't commit the/vendor folder to your repo" 的指导。所以这似乎是由于依赖不匹配引起的,在我的场景中 composer update 没有得到解决。

我遇到了同样的问题。只需删除 bootstrap/cache/ 中的文件即可解决问题。

cd bootstrap/cache/
rm -rf *.php