关于laravel 5:无法在数字海洋上安装/更新作曲家,找不到课程

can't composer install / update on digital ocean, class not found

这个让我很难过。 我git clone编辑了我在数字海洋(LEMP堆栈)上的回购并检出了development分支。 在这一点上都很好。 然后我做一个composer install来安装deps,这个死了:

1
2
PHP Fatal error:  Class 'App\MyApp\Api\Transformers\ProjectTransformer' not found
in /home/greg/MyApp/app/Providers/DatabaseServiceProvider.php on line 67

DatabaseServiceProvider在顶部有一个use语句,如:

1
use App\MyApp\Api\Transformers\ProjectTransformer;

这是一个laravel 5项目,它的价值。 DatabaseServiceProvider.php具有名称空间namespace App\Providers;作曲家抱怨的ProjectTransformer的内容是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php namespace App\MyApp\Api\Transformers;

class ProjectTransformer extends Transformer
{
    /**
     * @var array
     */
    protected $visible_fields = [
        'id',
        'title',
        'client_id',
        'division_id',
        'project_manager_id',
        'probability',
        'total_contract_value',
        'description',
        'devs'
    ];
}```

所以,composer表示我在DatabaseServiceProvider中使用ProjectTransformer并且无法找到。 该文件绝对存在,命名空间似乎是正确的......我还缺少什么? 另一个奇怪的问题是我可以在本地(在宅基地)从头开始composer install这个分支没有问题。 它只是在数字海洋上抱怨。 谢谢你的建议!


在shell中,试试这个:

1
composer install --no-scripts

如果成功运行,则在没有--no-scripts标记的情况下再次尝试。

--no-scripts标记将阻止编写器运行任何特定于Laravel的设置/拆除脚本,这些脚本通常作为编写器操作的一部分运行。您看到的错误消息可能是由于您的Laravel安装尚未完全设置(这并不奇怪,因为您尝试将其安装在新的位置)。

这有点鸡蛋和鸡蛋问题:自动加载器尚未设置,因此无法解析名称空间。但它无法设置自动加载器,因为它失败了,因为Laravel抱怨它无法解析相应的命名空间。

在没有脚本的情况下运行编写器将使作曲家有机会完成其工作 - 安装相应的软件包,初始化自动加载器 - 而不会失败,因为Laravel无法找到所需的软件包。然后,一旦作曲家有机会做到这一点,你可以再次运行它,Laravel将找到它需要的东西。