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

时间:2015-05-12 15:32:58

标签: composer-php laravel-5 digital-ocean

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

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

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

use App\MyApp\Api\Transformers\ProjectTransformer;

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

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

1 个答案:

答案 0 :(得分:1)

在shell中,试试这个:

composer install --no-scripts

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

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

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

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