我将我的Homestead盒子从20.04回购更新到了最新的官方版本。一切都安装得很好,似乎工作正常,但我的应用程序现在完全坏了。我在过去升级过Homestead,没有任何问题。
我运行的任何命令都会返回:
PHP Fatal error: Uncaught Error: Call to a member function connection() on null in /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1498
Stack trace:
#0 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1464): IlluminateDatabaseEloquentModel::resolveConnection()
#1 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1271): IlluminateDatabaseEloquentModel->getConnection()
#2 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1188): IlluminateDatabaseEloquentModel->newBaseQueryBuilder()
#3 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1224): IlluminateDatabaseEloquentModel->newModelQuery()
#4 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1177): IlluminateDatabaseEloquentModel->newQueryWithoutScopes()
#5 /home/vagrant/code/REMOVED in /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 1498
我无法运行任何artisan命令,Composer也无法完成创建正确的自动加载文件。
浏览网页显示:
Fatal error: Uncaught Error: Call to undefined method ComposerAutoloaderInit4ae805320ff6a78bd9cc38b042c51006::getLoader() in /home/vagrant/code/REMOVED/vendor/autoload.php:7 Stack trace: #0 /home/vagrant/code/REMOVED/bootstrap/autoload.php(3): require_once() #1 /home/vagrant/code/REMOVED/public/index.php(34): require_once('/home/vagrant/c...') #2 {main} thrown in /home/vagrant/code/REMOVED/vendor/autoload.php on line 7
MariaDB正在运行,仍然使用默认的homes/secret用户和密码。.env和所有代码也与升级前相同。还在nginx和CLI中使用PHP7.4。
我不知道该做什么,也不知道该去哪里看。有什么想法吗?
[编辑]
我已经启用了MariaDB常规日志来查看传入的连接尝试,但Laravel甚至没有尝试连接,所以这不是DB的问题。
我部分弄明白了。Linux并没有显示整个错误,当我在Mac上本地运行artisan命令时,它指向某个试图执行DB查询以获取设置值的包。
由于某种未知的原因,它失败了。我卸下了绳子,一切都很顺利。缓存.env,运行dump auto并重新启动FPM,所有操作都能加载1页。
所有后续的页面加载都会抛出一个PHP错误:
Fatal error: Uncaught Error: Call to undefined method ComposerAutoloaderInit4d864c59644e635478404aa0440854b7::getLoader() in /home/vagrant/code/REMOVED/vendor/autoload.php:7 Stack trace: #0 /home/vagrant/code/REMOVED/bootstrap/autoload.php(3): require_once() #1 /home/vagrant/code/REMOVED/public/index.php(34): require_once('/home/vagrant/c...') #2 {main} thrown in /home/vagrant/code/REMOVED/vendor/autoload.php on line 7