使用 Laravel Envoyer 上传特定供应商文件
Posted
技术标签:
【中文标题】使用 Laravel Envoyer 上传特定供应商文件【英文标题】:Uploading Specific Vendor files with Laravel's Envoyer 【发布时间】:2017-07-13 22:08:12 【问题描述】:我正在尝试使用 Laravel Forge 仅将特定供应商文件上传到我的服务器。 原因是因为我在一些依赖项中编辑了代码,现在发生的事情是我网站的某些功能正在破坏,因为当我从 Envoyer 推送到我的服务器时,Envoyer 正在从我的 GitHub 存储库中获取。
我的 GitHub 存储库不包含供应商目录,因为它不应该包含该目录,因为我已将该目录添加到我的 gitignore 文件中
/vendor/*
/node_modules
Homestead.yaml
Homestead.json
.env
我尝试将目录中的某些文件夹列入白名单,如下所示:
/vendor/*
/node_modules
Homestead.yaml
Homestead.json
.env
!/vendor
!/vendor/misd
但是当我从 Envoyer 部署到我的服务器后,我的网站停止工作并且我收到一条错误消息
Warning: require(/home/forge/default/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /home/forge/default/bootstrap/autoload.php on line 17
我尝试将 autoload.php 文件包含在白名单中,但部署后仍然收到类似消息
如何上传我的依赖版本(我编辑的依赖)。 现在发生的事情是 Envoyer 正在通过 composer 获取所有依赖项,因此从依赖项 repo 中获取,这很好,但是我需要能够安装我自己的一些依赖项的版本
任何想法
【问题讨论】:
永远不要编辑供应商文件夹中的文件。说真的,如果你这样做了,你正步入一个痛苦的世界,应该考虑重构以避免它,而不是试图对抗一个几乎完全基于没有人编辑文件的事实的完善的部署系统。供应商文件夹。 不要编辑供应商提供的文件,而是尝试扩展包,如果不可能,请 fork 项目并启动您自己的包。 【参考方案1】:正如问题本身的 cmets 所述,这是一个非常危险的情况,最好扩展包或分叉然后使用它。
话虽如此,看起来您确实遇到了 git 问题:仅基于您遇到的错误,问题似乎就好像您没有包含模块文件一样(您是否真的检查过模块文件存在吗?)还有更多 /home/forge/default/bootstrap/../vendor/autoload.php
不存在。根据您提供的.gitignore
,这是正确的(您忽略供应商中的所有文件--/vendor/*
--并且只包含目录本身--!/vendor
--和子目录/文件misd
--@ 987654326@)。您要么需要包含/vendor/autoload.php
--!/vendor/autoload.php
--要么需要在事后以某种方式生成它。
【讨论】:
以上是关于使用 Laravel Envoyer 上传特定供应商文件的主要内容,如果未能解决你的问题,请参考以下文章
升级 Laravel 5.6 的 Envoyer 部署失败引用不匹配的 PHP 版本