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
。
我该怎么办?
答案 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 folder
和composer.json
个文件。
5)在服务器上执行git pull并运行composer.lock
命令。它再次使用适当的依赖安装所有软件包。
今天了解到:永远不要在生产服务器或主服务器上运行composer update
。通过运行composer update
在本地计算机上安装软件包,它将安装所需的软件包并更新composer update
文件。推送服务器上的composer.lock
和composer.json
,拉上服务器,然后在服务器上运行composer.lock
。
注意:即使在您的本地主机上,如果您不想破坏依赖关系,也可以运行composer install
而不是运行composer update
,例如composer require
,这只会添加/更新此封装