【发布时间】:2017-05-04 15:17:31
【问题描述】:
有点奇怪的设置,但遇到了一个项目,其中 Composer 已在本地环境中用于启动项目。最初的开发者没有对生产服务器的 ssh 访问权限,因此他在本地使用 Composer 并使用 FTP 将“供应商”目录从他的桌面上传到服务器。
我现在需要添加 PHPMailer 包,所以在我的 Mac 上本地完成了以下操作:
cd Desktop/
composer require phpmailer/phpmailer
这在我的桌面上创建了以下结构:
Desktop/composer.json
Desktop/composer.lock
Desktop/vendor/autoload.php
Desktop/vendor/composer/*
Desktop/vendor/phpmailer/*
我需要通过 FTP 上传哪些文件?我知道vendor/phpmailer/* 是我想要的包,所以需要上传。
其他人呢?我已经配置了一个自动加载器,所以这里不需要猜测vendor/autoload.php?
composer.json我可以将包添加到已经存在的内容中,例如
"require": {
*other packages here*
"phpmailer/phpmailer": "^5.2"
}
但我不确定这是否有必要,因为我不会在服务器上使用 ssh/Composer 来运行任何更新?
【问题讨论】:
-
这取决于 phpmailer 需要什么。尝试在composer中创建一个空项目并只需要phpmailer。就是看需要哪些包才能正常运行,只通过FTP客户端上传。
-
您没有在
vendor中上传任何内容。你上传composer.lock到服务器,然后在服务器上运行composer install。 -
@ceejayoz 重新阅读帖子 - 我们无权访问服务器来运行任何 composer 命令!
-
只要将依赖添加到项目本地的composer.json文件和
composer update即可。之后只需上传供应商文件。 -
作为有同样问题的人,我想给一个提示:我使用 phpstorm 部署来上传和比较 /vendor 目录,这很痛苦,因为太慢了。更有效的是使用 Filezilla 上传整个 /vendor 目录
标签: php composer-php