"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 文件它会抛出同样的错误。)
我是 运行:
- PHP 7.1.26
- Laravel/Framework 5.7.24
- Laravel/Dusk 4.0
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 版本但没有成功。
经过三天的绞尽脑汁,我发现了我的愚蠢错误,并认为我应该分享。
我的情况是这样的:
- 我之前已将供应商文件夹提交到我的存储库,因为我在没有构建步骤的情况下从我的存储库进行部署。
- 我现在设置了一个部署管道,当我提交给特定的 b运行 时,它会编译和部署我的代码。
- 我有
composer update
作为该管道中的命令,因此决定是时候遵循最佳实践并将 /vendor
添加到我的 .gitignore
文件中了。
- 在将
/vendor
文件夹添加到我的 .gitignore
文件之前,我没有从我的存储库中删除它。
- 这导致
/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
更新到 Laravel 5.7 后,我在推送到我的测试服务器时突然遇到这个错误:"ReflectionException: Class config does not exist"。
我在我的开发环境中没有遇到它。
我采取了此处概述的步骤:
我的 .env 文件中没有任何空格 -- 我已经逐行查看了 4 次。
我还没有使用 Dusk 做任何事情 --(旁注可能对像我这样跌跌撞撞的人有帮助:起初我 运行 遇到 Dusk 告诉我不要使用 Dusk 的问题prod。事实证明那是因为我的部署脚本没有移动我的 .env 文件——如果不存在 .env 文件它会抛出同样的错误。)
我是 运行:
- PHP 7.1.26
- Laravel/Framework 5.7.24
- Laravel/Dusk 4.0
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 版本但没有成功。
经过三天的绞尽脑汁,我发现了我的愚蠢错误,并认为我应该分享。
我的情况是这样的:
- 我之前已将供应商文件夹提交到我的存储库,因为我在没有构建步骤的情况下从我的存储库进行部署。
- 我现在设置了一个部署管道,当我提交给特定的 b运行 时,它会编译和部署我的代码。
- 我有
composer update
作为该管道中的命令,因此决定是时候遵循最佳实践并将/vendor
添加到我的.gitignore
文件中了。 - 在将
/vendor
文件夹添加到我的.gitignore
文件之前,我没有从我的存储库中删除它。 - 这导致
/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