Laravel - 5.2.45 - 作曲家更新错误后 - laravel 5.2 Trait'Illuminate \ Foundation \ Auth \ AuthenticatesUsers'未找到

时间:2018-02-23 05:50:41

标签: php git laravel composer-php

Laravel在localhost上正常工作,我将所有代码都推送到了存储库并对主服务器进行了拉取。我错误地在服务器上运行了composer update而不是composer install。现在我的主服务器显示错误:

FatalErrorException in AuthenticatesAndRegistersUsers.php line 7:
Trait 'Illuminate\Foundation\Auth\AuthenticatesUsers' not found

主服务器没有任何权限,因此我无法修改或运行rm -rf之类的命令并重新安装所有内容。

我运行composer show,本地和主服务器都显示laravel/framework v5.2.45

我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以从本地替换composer.lock文件并运行composer install命令。

来自https://getcomposer.org/doc/03-cli.md#install

  

如果当前目录中有composer.lock文件,它将使用那里的确切版本而不是解析它们。这确保了使用该库的每个人都将获得相同版本的依赖项。

答案 1 :(得分:0)

我自己通过以下方法解决了这个问题:

1)备份composer.json, composer.lock and vendor folder

2)已修改composer.json - 从require和require-dev删除了所有包,运行composer update命令使我的本地供应商文件夹为空,然后我推送了composer.json和{{1}到服务器。

3)在服务器上执行git pull并运行composer.lock命令(从服务器上的vendor文件夹中删除了所有软件包)。

4)然后在本地计算机上,我用我在步骤1中执行的备份替换了composer update,然后将其推入服务器(请注意我已经在.gitignore中添加了vendor文件夹,所以它没有被推送,只推送了composer.json, composer.lock and vendor foldercomposer.json个文件。

5)在服务器上执行git pull并运行composer.lock命令。它再次使用适当的依赖安装所有软件包。

今天了解到:永远不要在生产服务器或主服务器上运行composer update。通过运行composer update在本地计算机上安装软件包,它将安装所需的软件包并更新composer update文件。推送服务器上的composer.lockcomposer.json,拉上服务器,然后在服务器上运行composer.lock

注意:即使在您的本地主机上,如果您不想破坏依赖关系,也可以运行composer install而不是运行composer update,例如composer require,这只会添加/更新此封装