【问题标题】:Carbon file not found Vagrant找不到碳文件 Vagrant
【发布时间】:2019-03-04 16:08:00
【问题描述】:

laravel/框架 v5.5.37

我 git 在我的机器上克隆了某人的项目。将 Vagrant 与 Homestead 盒子一起使用。我收到此错误:

我没有更改代码。在他的环境中它有效,在生产中它也有效。当我搜索 Carbon 时,它只在 composer.lock 文件中,而不是 composer.json 文件中。那是什么意思?我认为这意味着他已经在他的机器上全局安装了 nesbot/carbon,所以当我做 composer global require "nesbot/carbon" 时,我仍然得到错误。

它怎么可能被锁定但不在 json 中?我在 vagrant ssh 中完成所有这些操作。

【问题讨论】:

  • 只是为了确认一下,您是否在新副本上运行了composer install?位于 composer.lock 而不是 composer.json 的文件可能只是意味着它是一个 间接依赖项 - 也就是说,composer.json 中列出的东西需要碳,因此 Composer 遵循依赖关系图并决定安装它。

标签: laravel namespaces composer-php vagrant php-carbon


【解决方案1】:

你需要导入 Carbon:

use Carbon\Carbon;

在控制器中声明命名空间之后。

例如:

<?php

namespace App\Http\Controllers;

use Carbon\Carbon; // here added the line

这似乎不是“你”的错,它似乎是代码中的错误。 Carbon 被 Laravel 框架在底层使用,所以你不需要在你的 composer.json 文件中使用它。

【讨论】:

  • 虽然这可以解释错误,但不能解释为什么它似乎可以在同一代码库的其他副本上工作。
  • @IMSoP 我几乎 100% 确定它不会。重要的是,可能双方的开发人员都没有在这个应用程序中测试完全相同的 url。
  • 很难想象一个合理的服务器配置可以让您在控制器中使用 Carbon 而无需首先使用指向它的 use 语句
  • 没错,这是一个完全合理的解释。我只是想知道是否正在进行一些神奇的预处理或可能导致这种情况的东西。但在没有更多信息的情况下,奥卡姆剃刀建议“不要测试相同的代码”。
  • 谢谢,奇怪的是那块没有。
猜你喜欢
  • 2015-03-30
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2016-06-13
  • 2015-10-29
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多