【问题标题】:Call to a member function connection() on null (After upgrading Laravel Homestead)在 null 上调用成员函数 connection()(升级 Laravel Homestead 之后)
【发布时间】:2021-05-11 14:04:42
【问题描述】:

我将我的 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): Illuminate\Database\Eloquent\Model::resolveConnection()
#1 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1271): Illuminate\Database\Eloquent\Model->getConnection()
#2 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1188): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1224): Illuminate\Database\Eloquent\Model->newModelQuery()
#4 /home/vagrant/code/REMOVED/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1177): Illuminate\Database\Eloquent\Model->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 正在运行,仍然使用默认的 homestead/secret 用户并通过。 .env 和所有代码也与升级前相同。还在 nginx 和 CLI 中使用 PHP 7.4。

我不知道该做什么或去哪里看。有什么想法吗?

[编辑]

我已启用 MariaDB 常规日志以查看传入的连接尝试,但 Laravel 甚至没有尝试连接,所以这不是数据库问题。

【问题讨论】:

  • 该文件第 1498 行的代码是什么?我们是要猜测吗?
  • 嗯,它在供应商文件夹中,所以这是一个 Laravel 文件.... github.com/laravel/framework/blob/v8.40.0/src/Illuminate/…
  • 你能运行composer dump-autoload吗?
  • @waterloomatt 它确实可以运行,但随后失败,因为 composer.json 被配置为运行一些工匠命令,例如“php artisan package:discover --ansi”

标签: php laravel vagrant homestead


【解决方案1】:

我部分想通了。 Linux 没有显示整个错误,当我在本地 Mac 上运行 artisan 命令时,它指向某个包试图执行数据库查询以获取设置值。

由于某种未知原因失败了。我删除了线路,一切顺利。缓存 .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

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 2021-01-25
    • 1970-01-01
    • 2018-02-06
    • 2017-07-19
    • 2016-09-17
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多