这个让我难过。我在数字海洋(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
这个分支没有问题。它只是在数字海洋上抱怨。谢谢你的建议!
答案 0 :(得分:1)
在shell中,试试这个:
composer install --no-scripts
如果成功运行,请在没有--no-scripts
标记的情况下再次尝试。
--no-scripts
标记将阻止编写者运行任何特定于Laravel的设置/拆除脚本,这些脚本通常作为编写器操作的一部分运行。您看到的错误消息可能是由于您的Laravel安装尚未完全设置(这并不奇怪,因为您正在尝试将其安装在新的位置)。
这是一种鸡与蛋的问题:自动加载器尚未设置,因此它无法解析命名空间。但它无法设置自动加载器,因为它失败了,因为Laravel抱怨它无法解析相应的命名空间。
运行没有脚本的作曲家将为作曲家提供完成工作的机会 - 安装相应的软件包,初始化自动加载器 - 不会失败,因为Laravel无法找到所需的软件包。然后,一旦作曲家有机会做到这一点,你可以再次运行它,Laravel将找到它所需要的东西。